Ownership is measured by how many commits each author made to each file in the current tree. It highlights bus-factor risk (files only one person has ever touched) and where knowledge is concentrated. The bus factor is the smallest number of people who are, between them, primary owner of more than half of the files.
Files only one author has ever changed. The more a file has changed, the more knowledge is at risk if that person leaves.
| File | Sole owner | Commits |
|---|---|---|
| torch/_inductor/kernel/flex/templates/flash_attention.py.jinja | drisspg | 15 |
| tools/linter/adapters/raw_throw_linter.py | albanD | 10 |
| functorch/docs/source/install.rst | Richard Zou | 10 |
| torch/utils/model_dump/code.js | David Reiss | 10 |
| .github/actions/setup-xpu/action.yml | Wang, Chuanqi | 9 |
| tools/native_aot/export.py | Simon Layton | 8 |
| aten/src/ATen/native/metal/mpscnn/MPSCNNClampOp.mm | Tao Xu | 8 |
| torch/_inductor/codegen/metal_flex_attention_template.py | Isalia20 | 7 |
| torch/_inductor/kernel/flex/flex_mps.py | Isalia20 | 7 |
| aten/src/ATen/native/mps/kernels/DecodeAttention.h | Isalia20 | 7 |
| File | Sole owner | Commits |
|---|---|---|
| torch/_inductor/kernel/flex/templates/flash_attention.py.jinja | drisspg | 15 |
| tools/linter/adapters/raw_throw_linter.py | albanD | 10 |
| functorch/docs/source/install.rst | Richard Zou | 10 |
| torch/utils/model_dump/code.js | David Reiss | 10 |
| .github/actions/setup-xpu/action.yml | Wang, Chuanqi | 9 |
| tools/native_aot/export.py | Simon Layton | 8 |
| aten/src/ATen/native/metal/mpscnn/MPSCNNClampOp.mm | Tao Xu | 8 |
| torch/_inductor/codegen/metal_flex_attention_template.py | Isalia20 | 7 |
| torch/_inductor/kernel/flex/flex_mps.py | Isalia20 | 7 |
| aten/src/ATen/native/mps/kernels/DecodeAttention.h | Isalia20 | 7 |
| .github/scripts/s390x-ci/self-hosted-builder/actions-runner.Dockerfile | Aleksei Nikiforov | 7 |
| tools/native_aot/gen_aot_lib.py | Simon Layton | 6 |
| tools/native_aot/toolchains.py | Simon Layton | 6 |
| .github/scripts/rockset_mocks.json.gz | Huy Do | 6 |
| torch/_inductor/runtime/caching/exceptions.py | Nicolas Macchioni | 6 |
| tools/test/docstring_linter_testdata/python_code.py.txt.lintrunner | Tom Ritchford | 6 |
| test/mobile/custom_build/build.sh | Jiakai Liu | 6 |
| aten/src/ATen/native/mps/kernels/UnfoldBackward.metal | Nikita Shulga | 5 |
| aten/src/ATen/native/mps/kernels/TriangularOps.metal | Nikita Shulga | 5 |
| aten/src/ATen/test/mps_test_metal_library.cpp | Nikita Shulga | 5 |
| .ci/flash-attention/build.sh | Angel Li | 5 |
| torch/compiler/precompile.py | Bob Ren | 5 |
| test/inductor/test_module_level_kernels.py | Bob Ren | 5 |
| tools/native_aot/decl.py | Simon Layton | 5 |
| torch/_native/ops/reductions/kernel_rowtile.py | Simon Layton | 5 |
| torch/_native/ops/reductions/tile.py | Simon Layton | 5 |
| aten/src/ATen/xpu/XPUContext.h | Yu, Guangye | 5 |
| aten/src/ATen/native/mps/kernels/Sort.metal | Isalia20 | 5 |
| .github/actions/auto-pr-triage/action.yml | soulitzer | 5 |
| test/dynamo_expected_failures/CPython313-test_heapq-TestErrorHandlingC.test_arg_parsing | Guilherme Leobas | 5 |
| test/dynamo_expected_failures/CPython313-test_heapq-TestHeapC.test_heapsort | Guilherme Leobas | 5 |
| test/dynamo_expected_failures/CPython313-test_heapq-TestHeapC.test_push_pop | Guilherme Leobas | 5 |
| test/dynamo_expected_failures/CPython313-test_heapq-TestHeapPython.test_heapsort | Guilherme Leobas | 5 |
| test/dynamo_expected_failures/CPython313-test_heapq-TestHeapPython.test_push_pop | Guilherme Leobas | 5 |
| test/dynamo_expected_failures/CPython313-test_ordered_dict-PurePythonOrderedDictSubclassTests.test_sorted_iterators | Guilherme Leobas | 5 |
| test/dynamo_expected_failures/CPython313-test_ordered_dict-PurePythonOrderedDictTests.test_sorted_iterators | Guilherme Leobas | 5 |
| test/dynamo_expected_failures/CPython313-test_collections-TestOneTrickPonyABCs.test_registration | Guilherme Leobas | 5 |
| test/dynamo_expected_failures/CPython313-test_functools-TestSingleDispatch.test_mro_conflicts | Guilherme Leobas | 5 |
| torch/_higher_order_ops/switch.py | Thomas Bohnstingl | 5 |
| torch/_inductor/heuristics/template/base.py | xinan.lin | 5 |
| torch/_inductor/heuristics/template/cutedsl.py | xinan.lin | 5 |
| torch/_inductor/heuristics/template/gemm.py | xinan.lin | 5 |
| torch/_inductor/heuristics/template/params.py | xinan.lin | 5 |
| tools/test/test_raw_throw_linter.py | albanD | 5 |
| .ci/pytorch/test_fa3_abi_stable.sh | Jane Xu | 5 |
| torch/csrc/profiler/kineto_metadata.cpp | ryanzhang22 | 5 |
| torch/_functorch/_activation_offloading/offload_ops.py | Michael Lazos | 5 |
| .github/scripts/s390x-ci/self-hosted-builder/fs/usr/bin/actions-runner | Aleksei Nikiforov | 5 |
| scripts/hud/analyze_failing_jobs.py | Frederik Gossen | 5 |
| torch/onnx/_flags.py | Justin Chu | 5 |
| benchmarks/inference/results/output_128_false.md | Mikayla Gawarecki | 5 |
| benchmarks/inference/results/output_1_false.md | Mikayla Gawarecki | 5 |
| benchmarks/inference/results/output_256_false.md | Mikayla Gawarecki | 5 |
| benchmarks/inference/results/output_32_false.md | Mikayla Gawarecki | 5 |
| benchmarks/inference/results/output_64_false.md | Mikayla Gawarecki | 5 |
| aten/src/ATen/native/vulkan/glsl/hardsigmoid.glsl | Stephen Jia | 5 |
| aten/src/ATen/native/vulkan/glsl/hardsigmoid_.glsl | Stephen Jia | 5 |
| aten/src/ATen/native/vulkan/glsl/hardswish.glsl | Stephen Jia | 5 |
| aten/src/ATen/native/vulkan/glsl/hardswish_.glsl | Stephen Jia | 5 |
| aten/src/ATen/native/vulkan/glsl/reflection_pad2d.glsl | Stephen Jia | 5 |
| aten/src/ATen/native/vulkan/glsl/sigmoid.glsl | Stephen Jia | 5 |
| aten/src/ATen/native/vulkan/glsl/sigmoid_.glsl | Stephen Jia | 5 |
| tools/test/docstring_linter_testdata/python_code.py.txt.json | Tom Ritchford | 5 |
| aten/src/ATen/native/quantized/cpu/qnnpack/test/fully-connected-sparse.cc | Kimish Patel | 5 |
| test/cpp_extensions/jit_extension.cpp | Peter Goldsborough | 5 |
| test/cpp_extensions/jit_extension2.cpp | Peter Goldsborough | 5 |
| aten/src/ATen/native/mps/kernels/RenormKernel.metal | Nikita Shulga | 4 |
| aten/src/ATen/native/mps/kernels/Convolution.h | Isalia20 | 4 |
| scripts/auto_pr_triage/tests/test_apply_actions.py | soulitzer | 4 |
| scripts/auto_pr_triage/validate_ownership.py | soulitzer | 4 |
| torch/_vendor/quack/gemm_config.py | drisspg | 4 |
| torch/_vendor/quack/autotuner.py | drisspg | 4 |
| torch/_vendor/quack/cache/jit.py | drisspg | 4 |
| torch/_inductor/heuristics/template/bmm.py | Janani Sriram | 4 |
| torch/_inductor/kernel/templates/triton_blackwell_ws_persistent_tma_bmm.py.jinja | Janani Sriram | 4 |
| torch/_inductor/codegen/nv_universal_gemm/epilogue_capabilities.py | Michael Lazos | 4 |
| test/python_native/test_linear_cross_entropy_override.py | Pearu Peterson | 4 |
| .github/scripts/s390x-ci/self-hosted-builder/actions-runner@.service | Aleksei Nikiforov | 4 |
| benchmarks/inference/CHANGELOG.md | Mikayla Gawarecki | 4 |
| benchmarks/inference/results/output_128_true.md | Mikayla Gawarecki | 4 |
| benchmarks/inference/results/output_1_true.md | Mikayla Gawarecki | 4 |
| benchmarks/inference/results/output_256_true.md | Mikayla Gawarecki | 4 |
| benchmarks/inference/results/output_32_true.md | Mikayla Gawarecki | 4 |
| benchmarks/inference/results/output_64_true.md | Mikayla Gawarecki | 4 |
| benchmarks/inference/runner.sh | Mikayla Gawarecki | 4 |
| aten/src/ATen/native/vulkan/ops/Convert.h | Stephen Jia | 4 |
| tools/test/docstring_linter_testdata/more_python_code.py.txt.before.txt | Tom Ritchford | 4 |
| tools/test/docstring_linter_testdata/python_code.py.txt.recursive.json | Tom Ritchford | 4 |
| tools/test/docstring_linter_testdata/python_code.py.txt.recursive.terse.json | Tom Ritchford | 4 |
| tools/test/docstring_linter_testdata/python_code.py.txt.recursive.terse.line.json | Tom Ritchford | 4 |
| tools/test/docstring_linter_testdata/python_code.py.txt.report.json | Tom Ritchford | 4 |
| tools/test/docstring_linter_testdata/python_code.py.txt.single.line.json | Tom Ritchford | 4 |
| tools/test/docstring_linter_testdata/python_code.py.txt.terse.json | Tom Ritchford | 4 |
| tools/test/docstring_linter_testdata/python_code.py.txt.terse.line.json | Tom Ritchford | 4 |
| test/cpp/jit/test_cs_debug_info_serialization.cpp | Kimish Patel | 4 |
| aten/src/ATen/native/metal/MetalCommandBuffer.mm | Tao Xu | 4 |
| aten/src/ATen/core/dispatch/README.md | Sebastian Messmer | 4 |
| test/python_native/test_aot_manifest.py | Simon Layton | 3 |
| torch/_native/aot_manifest.py | Simon Layton | 3 |
| test/python_native/test_rmsnorm_cutedsl.py | Simon Layton | 3 |
Primary owner = the author with the most commits to a file. Solely owned = files only that author has touched.
| Author | Files owned | Solely owned | Files touched |
|---|---|---|---|
| Oguz Ulgen | 4,547 | 4,519 | 5,400 |
| Guilherme Leobas | 1,856 | 1,226 | 2,274 |
| cyy | 1,542 | 8 | 5,327 |
| Simon Fan | 1,050 | 1,038 | 1,263 |
| PyTorch MergeBot | 1,037 | 0 | 7,243 |
| Xuehai Pan | 499 | 0 | 3,177 |
| Nikita Shulga | 425 | 33 | 3,270 |
| Sam Larsen | 373 | 365 | 542 |
| Rob Timpe | 367 | 245 | 524 |
| Jason Ansel | 301 | 249 | 1,037 |
| Edward Z. Yang | 297 | 32 | 2,958 |
| Piotr Bielak | 277 | 277 | 317 |
| Keith | 242 | 242 | 244 |
| drisspg | 217 | 116 | 594 |
| ryanzhang22 | 198 | 177 | 230 |
| Jane Xu | 171 | 63 | 1,010 |
| Ashkan Aliabadi | 168 | 134 | 371 |
| Stephen Jia | 144 | 22 | 236 |
| albanD | 136 | 6 | 2,024 |
| eellison | 136 | 12 | 781 |
| Jerry Zhang | 136 | 0 | 458 |
| Peter Bell | 128 | 11 | 1,753 |
| Michael Suo | 125 | 8 | 1,567 |
| Tristan Rice | 125 | 46 | 466 |
| Turner Richmond | 112 | 43 | 178 |
Files touched by the most people — shared code where changes are most likely to need coordination.
| File | Contributors | Primary owner | Owner share |
|---|---|---|---|
| test/test_nn.py | 441 | Adam Paszke | 3.6% |
| aten/src/ATen/native/native_functions.yaml | 426 | PyTorch MergeBot | 5.9% |
| test/test_torch.py | 371 | Gregory Chanan | 4.2% |
| torch/testing/_internal/common_methods_invocations.py | 351 | kshitij12345 | 9.1% |
| torch/_torch_docs.py | 319 | Vishwak Srinivasan | 4.7% |
| test/inductor/test_torchinductor.py | 289 | PyTorch MergeBot | 11.7% |
| torch/nn/functional.py | 273 | Tongzhou Wang | 3.9% |
| caffe2/CMakeLists.txt | 269 | PyTorch MergeBot | 8.5% |
| CMakeLists.txt | 258 | Nikita Shulga | 7.1% |
| test/test_cuda.py | 251 | PyTorch MergeBot | 8.2% |
| torch/_C/__init__.pyi.in | 241 | PyTorch MergeBot | 14.7% |
| torch/__init__.py | 234 | PyTorch MergeBot | 10.6% |
| setup.py | 229 | Adam Paszke | 8.3% |
| test/test_jit.py | 221 | eellison | 11.9% |
| tools/autograd/derivatives.yaml | 219 | PyTorch MergeBot | 6.8% |
| test/test_autograd.py | 217 | soulitzer | 9.3% |
| torch/testing/_internal/common_utils.py | 212 | PyTorch MergeBot | 9.5% |
| test/run_test.py | 208 | Catherine Lee | 12.8% |
| torch/_meta_registrations.py | 203 | PyTorch MergeBot | 13.3% |
| cmake/Dependencies.cmake | 200 | cyy | 7.3% |