Developer
Rich Chiodo false
rchiodo@microsoft.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 |
|---|---|---|---|---|
| 362547b | This commit primarily **fixes several bugs** and **enhances declaration finding** within Pyrefly's **Type Server Protocol (TSP) implementation**, identified during testing with Pylance. It **corrects the conversion of literal types** by adjusting their declaration category, name, and flags in `pyrefly/lib/tsp/type_conversion.rs`. Additionally, the **LSP server** in `pyrefly/lib/lsp/non_wasm/server.rs` is updated to include the materialized typeshed standard library path, improving the ability to locate declarations. This work significantly **improves the correctness and compatibility** of Pyrefly's TSP, laying the groundwork for more robust Pylance integration and future nightly test runs. | Mar 30 | 3 | waste |
| 014d6f2 | This commit **enhances Pyrefly's Type Server Protocol (TSP) implementation** by adding the `typeServer/snapshotChanged` notification, enabling clients like **Pylance** to receive updates on the type snapshot. Concurrently, it **refactors the TSP protocol definitions** and Pyrefly's type conversion logic to use integer-based enumerations for `DeclarationCategory`, `TypeKind`, and `DeclarationKind`, ensuring **protocol compatibility** with TypeScript. This **new capability and protocol alignment** are critical steps towards making Pyrefly a fully functional TSP provider for Pylance, backed by comprehensive unit and integration tests. | Mar 20 | 12 | maint |
| 5d715a6 | This commit introduces **new type-related messages** to the **Type Server Protocol (TSP)**, enabling **Pyrefly** to fetch detailed type information at specific nodes and declarations. It adds `typeServer/getDeclaredType`, `typeServer/getComputedType`, and `typeServer/getExpectedType` requests, along with a significant **refactoring** of the `TypeFlags` representation within the `tsp_types` crate. A new `type_conversion` module in `pyrefly/lib/tsp` handles the complex mapping from internal Pyrefly types to the TSP protocol. This **new capability** greatly enhances **Pyrefly's** functionality as a language server backend, allowing clients like **Pylance** to provide richer type-aware features. Extensive unit and integration tests were added to validate the new type query functionality. | Mar 10 | 15 | grow |
| 3ffa1c1 | This commit introduces **support for the `typeServer/getPythonSearchPaths` TSP message**, a **new capability** that allows the server to communicate Python search paths (akin to `PYTHONPATH`) to connected clients. This is crucial for **Pylance integration**, enabling it to accurately locate and resolve stub implementations. The work involved implementing the new request handler in `pyrefly/lib/tsp/requests/get_python_search_paths.rs`, integrating it into the **TSP server dispatch logic** in `pyrefly/lib/tsp/server.rs`, and adding comprehensive **unit and integration tests** in `pyrefly/lib/test/tsp/tsp_interaction/get_python_search_paths.rs`. Additionally, existing TSP test infrastructure was **refactored** to use shared helper functions, and a new `parse_file_uri` utility was introduced for robust URI validation. | Mar 6 | 10 | grow |
| 05ae0e5 | This commit introduces a **new capability** to the **Type Server Protocol (TSP)** by adding the `typeServer/resolveImport` message, enabling clients to query the type server for the **file path of an imported module**. This functionality is crucial for accurate type computation and analysis within the `pyrefly` language server. The **`pyrefly` type server implementation** now includes a dedicated handler for this request, along with new shared **validation utilities** in `pyrefly/lib/tsp/validation.rs` and comprehensive **integration tests** to ensure its correctness. This enhancement significantly improves the server's ability to understand and process module dependencies, directly impacting the **Language Server Protocol (LSP)** integration. | Mar 4 | 9 | grow |
| 75b9f78 | This commit performs a significant **API version upgrade** by updating the **Type Server Protocol (TSP) definition** within the **`tsp_types` crate** to match the latest version used by Pylance. This **maintenance** task involved updating the `tsp.json` protocol definition, enhancing the `generate_protocol.py` script to support new features like type inheritance, and regenerating the corresponding Rust types in `protocol.rs`. This foundational work is critical for enabling Pyrefly to implement new TSP messages, ultimately allowing it to achieve feature parity and potentially replace Pyright within Pylance. New unit tests were also added to ensure the correctness of the updated protocol types. | Feb 24 | 5 | maint |
| 66b3240 | This commit **introduces a new capability** to the **Type Server Protocol (TSP)** by adding support for the `typeServer/getSnapshot` request. This enables clients to query the server's current "state of the world," which is represented by an incrementing snapshot version (an 'epoch'). The **`pyrefly` TSP server** (`pyrefly/lib/tsp/server.rs`) now tracks this snapshot, updating it on significant events like `RecheckFinished` or file changes, and handles the new request. Integration with the LSP queue was established via `TspInterface::recheck_queue` to facilitate this process. This **new feature** is crucial for maintaining client-server synchronization and is validated by comprehensive **integration tests**. | Oct 14 | 8 | maint |
| 63c9b92 | This commit **adds initial support for the Type Server Protocol (TSP)** within Pyrefly by implementing the `typeServer/getSupportedProtocol` request. This **new capability** allows clients to query the server for its supported TSP version, returning a hardcoded value. It involves updating the `TspServer` to handle this specific request via `handle_tsp_request` and introduces a comprehensive **new testing infrastructure** for TSP interactions. This includes dedicated integration tests for `getSupportedProtocolVersion` to ensure correct protocol handshake. This work lays the groundwork for further TSP integration, establishing a basic communication mechanism between Pyrefly and TSP-compatible clients. | Sep 10 | 13 | maint |
| 54a4038 | This commit **updates the TSP (Type System Protocol) to version 0.2.0**, aligning the `tsp_types` crate with the latest internal Pylance specification. This **major protocol update** involves **removing several deprecated requests** like `SearchForTypeAttributes` and `GetSymbolsForFile`, and **introducing new, more focused requests** such as `GetSymbolsForType` and `GetSymbolsForNode` to streamline symbol retrieval. The `Attribute` class is also eliminated in favor of the existing `Symbol` concept, leading to a **refactoring of the protocol's core data structures** and flag types within `tsp.json` and `protocol.rs`. This change is a **prerequisite for implementing new request handlers**, signifying a foundational shift in how type and symbol information is queried and processed. | Aug 31 | 19 | maint |
| 2457adc | This commit introduces a **new capability** to **Pyrefly** by adding a command to run a **Type Server Protocol (TSP) server**. It establishes the core `tsp` module and its server implementation, including event processing and capability generation. The **Pyrefly CLI** is updated to include this new `tsp` command, defining its arguments and execution logic. Additionally, the existing `lsp/server.rs` module undergoes a **refactoring** to introduce a `TspInterface` and expose components, enabling their reuse by the new TSP server. This foundational work sets up the initial framework for comprehensive TSP support, with further message handling to be implemented in subsequent changes. | Aug 22 | 7 | grow |
This commit primarily **fixes several bugs** and **enhances declaration finding** within Pyrefly's **Type Server Protocol (TSP) implementation**, identified during testing with Pylance. It **corrects the conversion of literal types** by adjusting their declaration category, name, and flags in `pyrefly/lib/tsp/type_conversion.rs`. Additionally, the **LSP server** in `pyrefly/lib/lsp/non_wasm/server.rs` is updated to include the materialized typeshed standard library path, improving the ability to locate declarations. This work significantly **improves the correctness and compatibility** of Pyrefly's TSP, laying the groundwork for more robust Pylance integration and future nightly test runs.
This commit **enhances Pyrefly's Type Server Protocol (TSP) implementation** by adding the `typeServer/snapshotChanged` notification, enabling clients like **Pylance** to receive updates on the type snapshot. Concurrently, it **refactors the TSP protocol definitions** and Pyrefly's type conversion logic to use integer-based enumerations for `DeclarationCategory`, `TypeKind`, and `DeclarationKind`, ensuring **protocol compatibility** with TypeScript. This **new capability and protocol alignment** are critical steps towards making Pyrefly a fully functional TSP provider for Pylance, backed by comprehensive unit and integration tests.
This commit introduces **new type-related messages** to the **Type Server Protocol (TSP)**, enabling **Pyrefly** to fetch detailed type information at specific nodes and declarations. It adds `typeServer/getDeclaredType`, `typeServer/getComputedType`, and `typeServer/getExpectedType` requests, along with a significant **refactoring** of the `TypeFlags` representation within the `tsp_types` crate. A new `type_conversion` module in `pyrefly/lib/tsp` handles the complex mapping from internal Pyrefly types to the TSP protocol. This **new capability** greatly enhances **Pyrefly's** functionality as a language server backend, allowing clients like **Pylance** to provide richer type-aware features. Extensive unit and integration tests were added to validate the new type query functionality.
This commit introduces **support for the `typeServer/getPythonSearchPaths` TSP message**, a **new capability** that allows the server to communicate Python search paths (akin to `PYTHONPATH`) to connected clients. This is crucial for **Pylance integration**, enabling it to accurately locate and resolve stub implementations. The work involved implementing the new request handler in `pyrefly/lib/tsp/requests/get_python_search_paths.rs`, integrating it into the **TSP server dispatch logic** in `pyrefly/lib/tsp/server.rs`, and adding comprehensive **unit and integration tests** in `pyrefly/lib/test/tsp/tsp_interaction/get_python_search_paths.rs`. Additionally, existing TSP test infrastructure was **refactored** to use shared helper functions, and a new `parse_file_uri` utility was introduced for robust URI validation.
This commit introduces a **new capability** to the **Type Server Protocol (TSP)** by adding the `typeServer/resolveImport` message, enabling clients to query the type server for the **file path of an imported module**. This functionality is crucial for accurate type computation and analysis within the `pyrefly` language server. The **`pyrefly` type server implementation** now includes a dedicated handler for this request, along with new shared **validation utilities** in `pyrefly/lib/tsp/validation.rs` and comprehensive **integration tests** to ensure its correctness. This enhancement significantly improves the server's ability to understand and process module dependencies, directly impacting the **Language Server Protocol (LSP)** integration.
This commit performs a significant **API version upgrade** by updating the **Type Server Protocol (TSP) definition** within the **`tsp_types` crate** to match the latest version used by Pylance. This **maintenance** task involved updating the `tsp.json` protocol definition, enhancing the `generate_protocol.py` script to support new features like type inheritance, and regenerating the corresponding Rust types in `protocol.rs`. This foundational work is critical for enabling Pyrefly to implement new TSP messages, ultimately allowing it to achieve feature parity and potentially replace Pyright within Pylance. New unit tests were also added to ensure the correctness of the updated protocol types.
This commit **introduces a new capability** to the **Type Server Protocol (TSP)** by adding support for the `typeServer/getSnapshot` request. This enables clients to query the server's current "state of the world," which is represented by an incrementing snapshot version (an 'epoch'). The **`pyrefly` TSP server** (`pyrefly/lib/tsp/server.rs`) now tracks this snapshot, updating it on significant events like `RecheckFinished` or file changes, and handles the new request. Integration with the LSP queue was established via `TspInterface::recheck_queue` to facilitate this process. This **new feature** is crucial for maintaining client-server synchronization and is validated by comprehensive **integration tests**.
This commit **adds initial support for the Type Server Protocol (TSP)** within Pyrefly by implementing the `typeServer/getSupportedProtocol` request. This **new capability** allows clients to query the server for its supported TSP version, returning a hardcoded value. It involves updating the `TspServer` to handle this specific request via `handle_tsp_request` and introduces a comprehensive **new testing infrastructure** for TSP interactions. This includes dedicated integration tests for `getSupportedProtocolVersion` to ensure correct protocol handshake. This work lays the groundwork for further TSP integration, establishing a basic communication mechanism between Pyrefly and TSP-compatible clients.
This commit **updates the TSP (Type System Protocol) to version 0.2.0**, aligning the `tsp_types` crate with the latest internal Pylance specification. This **major protocol update** involves **removing several deprecated requests** like `SearchForTypeAttributes` and `GetSymbolsForFile`, and **introducing new, more focused requests** such as `GetSymbolsForType` and `GetSymbolsForNode` to streamline symbol retrieval. The `Attribute` class is also eliminated in favor of the existing `Symbol` concept, leading to a **refactoring of the protocol's core data structures** and flag types within `tsp.json` and `protocol.rs`. This change is a **prerequisite for implementing new request handlers**, signifying a foundational shift in how type and symbol information is queried and processed.
This commit introduces a **new capability** to **Pyrefly** by adding a command to run a **Type Server Protocol (TSP) server**. It establishes the core `tsp` module and its server implementation, including event processing and capability generation. The **Pyrefly CLI** is updated to include this new `tsp` command, defining its arguments and execution logic. Additionally, the existing `lsp/server.rs` module undergoes a **refactoring** to introduce a `TspInterface` and expose components, enabling their reuse by the new TSP server. This foundational work sets up the initial framework for comprehensive TSP support, with further message handling to be implemented in subsequent changes.
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.