Rebecca Chen
90d · built 2026-09-30
Performance
What Rebecca Chen shipped in the selected window, measured in ETV, and how it compares with the 90 days before it.
Effective capacity
+0.8engineers
delivers like 1.8 (1.8x pre-AI)
Output (ETV)
36.0ETV
+57.2% vs 22.9 prior
Features share
14.4%
+2.7 pp vs prior window
Fixes share
29.8%
+1.3 pp vs prior window
Work mix
14.4% Features42.8% Maintenance10.4% Tests2.6% Docs29.8% Fixes
281 commits over 90 days, ending 2026-09-30.
Where this dev ranks
Percentile against the global top-100 leaderboard (all-time totals).
- By commits
- Top 1 %
- By Features share
- Top 93 %
Daily performance
Daily ETV, stacked by Features, Maintenance, Tests, Docs and Fixes.
Repository spread
Where this developer's commits land. Concentrated work (top1 > 80%) vs polymath spread (top1 < 30%).
Most impactful commits
Top 10 by ETV in the last 90 days.
- 1.9ETVMove tests to end of solver.rs Summary: Moves a `mod test {...}` that was sandwiched in the middle of a file. No other changes. Reviewed By: grievejia Differential Revision: D115827083 fbshipit-source-id: e1307a251debc80a27043ba6cbc7523d4faf6645github.com-facebook-pyrefly · f40c4dc9 · 2026-08-13
- 1.2ETVStop nested classes from using an outer class's scoped type parameters Summary: PEP 695-style type parameters declared by a class are not available inside a nested class, but Pyrefly allowed them in bases, defaults, and annotations. Record which names are class type parameters and stop lookup when it reaches one from an outer class, so the invalid use is reported. Reviewed By: grievejia Differential Revision: D115705194 fbshipit-source-id: f2657c711e7e9b25493d779954e9084c94f16172github.com-facebook-pyrefly · c10877fd · 2026-08-18
- 0.8ETVKeep inferred types from the selected overload Summary: When a higher-order call selected one overload, type information learned while checking that overload was discarded. This could leave internal placeholder types in results such as `list(map(list, rows))`. Recheck the selected overload after choosing it so the inferred nested types are kept, while multiple possible overloads remain separate. Reviewed By: grievejia Differential Revision: D115799014 fbshipit-source-id: 6e5b6de2a1cef832d866ea88f25d2437a69bfb19github.com-facebook-pyrefly · 4db7b0d2 · 2026-08-17
- 0.8ETVUpdate conformance sources Summary: Pyrefly's score goes down a bit because variance for TypeVarTuple and ParamSpec landed, which pyrefly does not yet support. Reviewed By: samwgoldman Differential Revision: D115950269 fbshipit-source-id: 4751524f7d637b01419226c773b81ac019289674github.com-facebook-pyrefly · cb5b3c77 · 2026-08-14
- 0.7ETVAdd Type::Overloaded Summary: See https://github.com/facebook/pyrefly/discussions/4655 for context. This diff adds `Type::Overloaded`, which will be used to store the result of a higher-order function call when we need to preserve the structure of an overloaded function passed as an argument. Semantics: * `Overloaded` is assignable to a type if any of its alternatives is. This is consistent with overloaded functions. (Note that this diff does not add the `is_subset_eq` rule that implements this. It's pretty complicated, so it comes in a later diff so it can be reviewed on its own.) * Attribute access looks up the attribute on all alternatives and re-combines the lookup results. * Calls follow overload semantics. * Other operations (e.g., subscription) approximate overload semantics: alternatives with incompatible input signatures are dropped, and the results of the operation on the remaining alternatives are re-combined. `Overloaded` is not constructed anywhere yet; that'll come later. Reviewed By: stroxler Differential Revision: D117467797 fbshipit-source-id: 86e1b93fd394127b0dafaa19c77068dd7c1ec063github.com-facebook-pyrefly · 702f0d12 · 2026-09-17
- 0.7ETVPrefer to insert `from` imports Summary: The previous diffs in this stack made it so that when we double-click on an inlay hint to import it, we also insert any required imports. However, the implementation defaulted to inserting `import foo` and `foo.X`, even though the hint shows `X` unless the module name is needed for disambiguation. This diff makes it so that we prefer to insert `from foo import X` and `X`. We still reuse `import foo` if it already exists in the file. Reviewed By: yangdanny97 Differential Revision: D114664767 fbshipit-source-id: 2c3ba897507b95750fb6fb7e31d5438a8ad16393github.com-facebook-pyrefly · 785a3d54 · 2026-08-05
- 0.7ETVSplit pyrefly_types/src/callable.rs into two files Summary: `callable.rs` was getting really long. This diff splits out a new `function.rs` (named so because it contains `FuncMetadata`, `FuncFacts`, etc.) and updates import paths accordingly, with no other changes. Reviewed By: maggiemoss Differential Revision: D114987156 fbshipit-source-id: 5dfec425605fbf2d7807f045bc50839c9446275egithub.com-facebook-pyrefly · fea518f9 · 2026-08-06
- 0.6ETVRename residual capture terminology Summary: See https://github.com/facebook/pyrefly/discussions/4655 for context. This diff is a pure rename that gets rid of most references to residuals, in preparation for moving away from them to a correlation table design. I did the rename first because the new logic is easier to understand if appropriate names are already in place. ___ Differential Revision: D117934032 fbshipit-source-id: 8c7c7658a10663851b9ce361348f88691f0c3f03github.com-facebook-pyrefly · 8ffa1b86 · 2026-09-17
- 0.6ETVMake fields of `Tuple::Unpacked` private Summary: This is the second time (that I remember) that I've had to fix a subtle bug caused by direct construction of `Tuple::Unpacked`. Let's just make it impossible to construct directly. Note for reviewing: the only interesting parts of this change are in `crates/pyrefly_types/src/tuple.rs`, where I've added an `UnpackedTupleParts` struct with a few accessors. The rest is just mechanically rewriting code to use the accessors. Reviewed By: yangdanny97 Differential Revision: D115503925 fbshipit-source-id: c5a013b7f802d8cd2351df9200151c5ee9900086github.com-facebook-pyrefly · 477d0f94 · 2026-08-11
- 0.6ETVThread overload solutions through call inference Summary: See https://github.com/facebook/pyrefly/discussions/4655 for context. This diff adds an (empty) `OverloadTable` struct and threads it through call inference. This is a no-op change that adds the mechanical plumbing for `OverloadTable` so that it's not mixed with complicated solver logic in subsequent diffs, which require more careful review. ___ Differential Revision: D118248180 fbshipit-source-id: c6e8cd48462272beec139384a62bb119f1596551github.com-facebook-pyrefly · b8e4559a · 2026-09-17