Evidence ledger
One row per claim in Everything that demanded the whole program got archived: ten years of Meta's ML platform: who published it, what grade it carries, when it was written, when the link was last checked, and the quote or figure it rests on. Nothing in the guide is cited from memory, so anything not in this table is not in the guide.
Topic: how Meta's machine-learning platform changed between 2016 and 2026, reconstructed from the artefacts the platform is changed through: the PyTorch source tree at eight release tags, the design-record repository including proposals closed without merging, dated archive banners on sibling repositories, published security advisories, package registries, and the issues that downstream maintainers filed when a capture path was deprecated under them.
All links fetched 2026-09-24. One row per claim. Quotes are copied, not paraphrased. (E) marks
an exact quotation, (R) a figure reported by the artefact, (D) a figure derived by counting
what the artefact contains.
Evidence limits, stated up front
- The network policy for this session blocked most of the open web.
pytorch.org,docs.pytorch.org,engineering.fb.com,arxiv.org,dl.acm.org,usenix.org,attic.apache.org,huggingface.co,crates.ioandanaconda.orgall refused at the egress proxy. There are therefore no engineering-blog posts, no papers and no conference talks in this ledger. Where a claim would normally be corroborated against a blog post, it is corroborated against the source tree at a release tag or a registry timestamp instead. - Meta publishes no incident postmortems for this platform. The four
postmortem-graded rows are the project's own published security advisories, which are the only artefacts in the corpus that describe a defence failing in the field. Every other failure claim is either the project's own deprecation record (gradedsourceorvendor) or a downstream maintainer's issue report (gradedsource), and the guide says which. - Motives are mostly not published. The tree records what changed and when, precisely. Where this guide states why, it either quotes a stated reason from a docstring, release note, RFC or issue, or it marks the reading as an inference.
- Consequence for the reader: the guide is strong on dated fact (what shipped, what stopped, which default flipped in which release) and weak on internal deliberation and on cost.
| # | Org | Title | Tier | Published | Checked | URL | Claim I take from it | Supporting quote or figure |
|---|---|---|---|---|---|---|---|---|
| 1 | Meta / PyTorch | torch/jit/__init__.py at main |
source | 2026-09 | 2026-09-24 | https://raw.githubusercontent.com/pytorch/pytorch/main/torch/jit/__init__.py | TorchScript is deprecated in the code itself, naming the release | (E) ".. deprecated:: 2.5" / "TorchScript is deprecated, please use torch.compile instead." (four occurrences) |
| 2 | Meta / PyTorch | torch/jit/_script.py at main |
source | 2026-09 | 2026-09-24 | https://raw.githubusercontent.com/pytorch/pytorch/main/torch/jit/_script.py | The mobile runtime is deprecated in favour of ExecuTorch, and scripting in favour of compile/export | (E) "Lite Interpreter is deprecated. Please consider switching to ExecuTorch." and (E) "torch.jit.script_method is deprecated. Please switch to torch.compile or torch.export." |
| 3 | Meta / PyTorch | torch/export/__init__.py at main |
source | 2026-09 | 2026-09-24 | https://raw.githubusercontent.com/pytorch/pytorch/main/torch/export/__init__.py | The sound capture mode is now opt-in, and the docstring states the trade-off | (E) "strict: When disabled (default), the export function will trace the program through Python runtime, which by itself will not validate some of the implicit assumptions baked into the graph... When enabled (by setting strict=True), the export function will trace the program through TorchDynamo which will ensure the soundness of the resulting graph. TorchDynamo has limited Python feature coverage, thus you may experience more errors." |
| 4 | Meta / PyTorch | torch/export/__init__.py at tag v2.7.0 |
source | 2025-04-23 | 2026-09-24 | https://raw.githubusercontent.com/pytorch/pytorch/refs/tags/v2.7.0/torch/export/__init__.py | Through 2.7 the default was the sound mode | (E) "strict: bool = True," (lines 81 and 176) |
| 5 | Meta / PyTorch | torch/export/__init__.py at tag v2.8.0 |
source | 2025-08-06 | 2026-09-24 | https://raw.githubusercontent.com/pytorch/pytorch/refs/tags/v2.8.0/torch/export/__init__.py | From 2.8 the default is the unvalidated mode | (E) "strict: bool = False," (lines 82 and 181) |
| 6 | Meta / PyTorch | PyTorch 2.8.0 release notes | vendor | 2025-08-06 | 2026-09-24 | https://github.com/pytorch/pytorch/releases/tag/v2.8.0 | The flip is a declared backwards-incompatible change, with the ONNX default flip alongside it | (E) "Switched default to strict=False in torch.export.export and export_for_training (#148790, #150941). This differs from the previous release default of strict=True. To revert to the old default behavior, please explicitly pass strict=True." and (E) "The dynamo=False (current default) option for torch.onnx.export is deprecated (#152478, #155580). The default will be dynamo=True starting from PyTorch 2.9." |
| 7 | Meta / PyTorch | docs/source/user_guide/torch_compiler/export.md |
vendor | 2026-09 | 2026-09-24 | https://raw.githubusercontent.com/pytorch/pytorch/main/docs/source/user_guide/torch_compiler/export.md | The platform documents partial capture and full capture as two different products with a stated usability trade-off | (E) "Partial vs. Full Graph Capture: When {func}torch.compile runs into an untraceable part of a model, it will \"graph break\" and fall back to running the program in the eager Python runtime. In comparison, torch.export aims to get a full graph representation of a PyTorch model, so it will error out when something untraceable is reached." and (E) "Compared to {func}torch.jit.trace, torch.export is sound" |
| 8 | Meta / PyTorch | docs/source/user_guide/torch_compiler/export.md |
vendor | 2026-09 | 2026-09-24 | https://raw.githubusercontent.com/pytorch/pytorch/main/docs/source/user_guide/torch_compiler/export.md | The documented escape from a capture failure is to give up soundness | (E) "An option to get past dealing with this graph breaks is by using non-strict export through changing the strict flag to strict=False." and (E) "Graph breaks can also be encountered on data-dependent control flow (if x.shape[0] > 2) when shapes are not being specialized, as a tracing compiler cannot possibly deal with without generating code for a combinatorially exploding number of paths." |
| 9 | Meta / PyTorch | torch/_dynamo/graph_break_registry.json at main |
source | 2026-09 | 2026-09-24 | https://raw.githubusercontent.com/pytorch/pytorch/main/torch/_dynamo/graph_break_registry.json | Partial capture has a catalogued failure surface of 586 distinct reasons | (D) 586 top-level entries, keys GB0000 to GB9958; first entry (E) "All torch_function overrides returned NotImplemented due to TypeError from user code" |
| 10 | Meta / PyTorch | compile-graph-break-site README |
source | 2026-09 | 2026-09-24 | https://github.com/meta-pytorch/compile-graph-break-site | The graph-break catalogue is a published, continuously regenerated product | (E) "a comprehensive and automatically updated registry of graph breaks encountered when using PyTorch Dynamo" and (E) "This site is automatically updated every 3 minutes via a GitHub Actions cron job." |
| 11 | Meta / PyTorch | RFC-0032, A PyTorch - NumPy compatibility layer | adr | 2023 | 2026-09-24 | https://raw.githubusercontent.com/pytorch/rfcs/master/RFC-0032-numpy-support-in-dynamo.md | Graph breaking is designed in as an acceptable outcome, not only tolerated | (E) "The main goal is: make TorchDynamo understand NumPy calls." and (E) "For niche functions in NumPy that don't have a PyTorch equivalent, it's okay to graph break and still call NumPy to execute the function call." |
| 12 | Meta / PyTorch | RFC-0017, PyTorch Operator Versioning | adr | 2021-2022 | 2026-09-24 | https://raw.githubusercontent.com/pytorch/rfcs/master/RFC-0017-PyTorch-Operator-Versioning.md | Meta's internal compatibility promise was written in terms of serialized TorchScript, which is why the format could not simply be deleted | (E) "Meta Internal — we will not break a serialized torchscript program running in production at Meta (to be replaced with a more generic SLA)" and (E) "Moving forward, we're not having a difference between Meta internal and Open Source (OSS) guarantees." and (E) "OSS — 'stable' features will be deprecated for one release before a BC-breaking change is made." |
| 13 | Meta / PyTorch | pytorch/rfcs PR #15, RFC-0009 DataLoader architecture updates | source | opened 2021-01-29, closed 2022-07-07 | 2026-09-24 | https://github.com/pytorch/rfcs/pull/15 | The data-loading redesign was proposed, argued over for 18 months, and closed without merging while the code shipped anyway | (R) opened 2021-01-29, closed 2022-07-07, not merged; (E) "Lazy loading - Users want to point PyTorch to a remote data source (e.g. HTTP, S3, GCP, Azure, Manifold, Hive) and iterate over contents without downloading the entire dataset" |
| 14 | Meta / PyTorch | pytorch/rfcs README | adr | 2026-09 | 2026-09-24 | https://raw.githubusercontent.com/pytorch/rfcs/master/README.md | The project has a written design-record process, and its scope is explicitly the large decisions | (E) RFCs suit "design proposals that are too large to discuss on a feature-request issue, like adding a new abstraction, or if a discussion about the tradeoffs involved in a new addition are non-trivial." and (E) "Every accepted RFC has an associated issue tracking its implementation in the PyTorch repository" |
| 15 | Meta / PyTorch | Issue #103841, status of TorchScript / JIT / FX and its replacement by Dynamo | source | opened 2023-06-19 | 2026-09-24 | https://github.com/pytorch/pytorch/issues/103841 | A request for a written statement of the capture roadmap was closed as not planned | (R) title "[question] [docs] Short/mid/long-term status of TorchScript / JIT / torch.jit.trace / FX / symbolic tracing and its replacement by Dynamo"; opened 2023-06-19 by @vadimkantorov; state: closed as not planned |
| 16 | Meta / PyTorch | Issue #72536, Remove Caffe2 | source | opened 2022-02-08 | 2026-09-24 | https://github.com/pytorch/pytorch/issues/72536 | Removing the merged production framework was filed as a task in February 2022 | (E) "Caffe2 has been deprecated for some time, and the little Caffe2 code that PyTorch is using can be refactored into PyTorch proper." |
| 17 | Meta / PyTorch | caffe2/CMakeLists.txt at main |
source | 2026-09 | 2026-09-24 | https://raw.githubusercontent.com/pytorch/pytorch/main/caffe2/CMakeLists.txt | Four and a half years after that issue, the directory named for the removed framework is where libtorch is built | (D) 2,258 lines; (E) "add_subdirectory(../aten aten)" and (E) "# ---[ ATen build" |
| 18 | Meta / PyTorch | caffe2/serialize/inline_container.h at tags v2.8.0, v2.9.0, v2.11.0, v2.14.0 and main |
source | 2025-2026 | 2026-09-24 | https://raw.githubusercontent.com/pytorch/pytorch/refs/tags/v2.14.0/caffe2/serialize/inline_container.h | The checkpoint container inherited from Caffe2 is still present in every release checked | (D) HTTP 200 at v2.8.0, v2.9.0, v2.11.0, v2.14.0 and main; the same path under caffe2/ in all five |
| 19 | Meta / PyTorch | TorchData v0.9.0 release notes | vendor | 2024-10-21 | 2026-09-24 | https://github.com/pytorch/data/releases | The data-loading redesign is announced as ending | (E) "This will notably be the last stable release to feature DataPipes and DataLoader2!" |
| 20 | Meta / PyTorch | TorchData v0.10.1 release notes | vendor | 2024-12-13 | 2026-09-24 | https://github.com/pytorch/data/releases | The redesign is removed, and the distribution channel changes in the same note | (E) "This release drops support for DataPipes and DataLoader2. Release v0.9 was the last stable release which includes them." and (E) "PyTorch's official conda channel is deprecated. TorchData has removed its conda builds as well." |
| 21 | PyPI | torch release history |
casestudy | 2018-2026 | 2026-09-24 | https://pypi.org/project/torch/ | The release cadence and the exact dates every version claim in this guide is checked against | (R) 1.0.0 2018-12-07; 2.0.0 2023-03-15; 2.5.0 2024-10-17; 2.6.0 2025-01-29; 2.7.0 2025-04-23; 2.8.0 2025-08-06; 2.9.0 2025-10-15; 2.14.0 2026-09-02 (earliest file upload time per version, from the PyPI JSON API) |
| 22 | PyPI | torchdata release history |
casestudy | 2021-2025 | 2026-09-24 | https://pypi.org/project/torchdata/ | The side-repo data stack ran for three years and then stopped shipping | (R) 0.3.0a0 2021-12-02, 0.3.0 2022-03-10, 0.9.0 2024-10-21, 0.10.1 2024-12-13, 0.11.0 2025-02-20, nothing since (16 versions total) |
| 23 | PyPI | executorch release history |
casestudy | 2023-2026 | 2026-09-24 | https://pypi.org/project/executorch/ | The on-device runtime now ships faster than the framework it belongs to | (R) 0.1.0 2023-10-11; 1.0.0 2025-10-17; 1.5.1 2026-09-22; 18 versions, of which 8 in the twelve months to 2026-09 |
| 24 | PyPI | torchtune release history |
casestudy | 2024-2025 | 2026-09-24 | https://pypi.org/project/torchtune/ | The post-training library shipped for twelve months and stopped | (R) 0.0.1 2024-03-21; last release 0.6.1 2025-04-07 |
| 25 | PyPI / pythonhosted | torchtune-0.6.1-py3-none-any.whl |
casestudy | 2025-04-07 | 2026-09-24 | https://files.pythonhosted.org/packages/eb/de/da079f77188a5e3c53163c4488fad2a23733bab25a895e9a2dfc9aa5bbe6/torchtune-0.6.1-py3-none-any.whl | The final artefact is still served, which is what "wound down" means in practice for a dependency | (R) 910,674 bytes, uploaded 2025-04-07T21:07:28Z, HTTP 206 on a range request 2026-09-24 |
| 26 | Meta / PyTorch | torchtune issue #2883, The future of torchtune | source | 2025-07-15 | 2026-09-24 | https://github.com/meta-pytorch/torchtune/issues/2883 | The library was stopped by strategy, not by lack of users, and the reason given is a change in workload shape | (E) "The AI landscape has rapidly evolved, with ever-increasing scale, an emphasis on agents, and a reinforcement learning renaissance." and (E) "Torchtune will continue to receive critical bug fixes and security patches during 2025" and (R) "over 150 amazing contributors", 21 recipes |
| 27 | Meta / PyTorch | pytorch/serve (TorchServe) | source | archived 2025-08-07 | 2026-09-24 | https://github.com/pytorch/serve | The project's own server is archived with an explicit no-security-patches notice | (E) "This repository was archived by the owner on Aug 7, 2025. It is now read-only." and (E) "This project is no longer actively maintained. While existing releases remain available, there are no planned updates, bug fixes, new features, or security patches. Users should be aware that vulnerabilities may not be addressed." |
| 28 | Docker Hub | pytorch/torchserve image tags |
casestudy | 2024-09-30 | 2026-09-24 | https://hub.docker.com/r/pytorch/torchserve/tags | The server stopped being built eleven months before it was archived | (R) newest tags 0.12.0-gpu, 0.12.0-cpu, 0.12.0-cpp-dev-gpu, all last_updated 2024-09-30 |
| 29 | Meta / PyTorch | pytorch/functorch | source | archived 2025-08-21 | 2026-09-24 | https://github.com/pytorch/functorch | An absorbed component keeps a live repository for three years after the code moves in-tree | (E) "This repository was archived by the owner on Aug 21, 2025. It is now read-only." and (E) "as of 9/21/2022, functorch comes installed alongside PyTorch and is in the PyTorch source tree" |
| 30 | Meta / PyTorch | pytorch/elastic (TorchElastic) | source | archived 2023-01-06 | 2026-09-24 | https://github.com/pytorch/elastic | Same pattern, earlier: the capability moved into core and the satellite repo was archived | (E) "This repository was archived by the owner on Jan 6, 2023. It is now read-only." plus the README's redirect to torch.distributed.elastic in PyTorch 1.9 and later, and the note that the Kubernetes controller is unmaintained in favour of TorchX |
| 31 | Meta | facebookresearch/fairscale | source | 2021-2026 | 2026-09-24 | https://github.com/facebookresearch/fairscale | The sharded-training research library survives as a reference after its main contribution was upstreamed | (E) "This library has been upstreamed to PyTorch" (FSDP note), repository not archived as of 2026-09-24 |
| 32 | Meta | pytorch/glow | source | archived 2025-07-01 | 2026-09-24 | https://github.com/pytorch/glow | The accelerator compiler bet was abandoned, with its README still claiming active development | (E) "This repository was archived by the owner on Jul 1, 2025. It is now read-only." and (E) "This library is in active development." |
| 33 | Meta | facebookresearch/TensorComprehensions | source | archived 2023-04-28 | 2026-09-24 | https://github.com/facebookresearch/TensorComprehensions | The earlier kernel-synthesis bet was abandoned two years before Glow | (E) "This repository was archived by the owner on Apr 28, 2023. It is now read-only." |
| 34 | Meta | facebookresearch/fairseq | source | archived 2026-03-20 | 2026-09-24 | https://github.com/facebookresearch/fairseq | The research modelling toolkit is archived, six months before this guide | (E) "This repository was archived by the owner on Mar 20, 2026. It is now read-only." |
| 35 | Meta / PyTorch | Advisory GHSA-53q9-r3pm-6pq6, torch.load with weights_only=True RCE |
postmortem | 2025-04-17 | 2026-09-24 | https://github.com/pytorch/pytorch/security/advisories | The safe-by-default loader was bypassable within three months of becoming the default | (R) title "torch.load with weights_only=True RCE", severity Critical, published 2025-04-17 |
| 36 | Meta / PyTorch | Advisory GHSA-63cw-57p8-fm3p | postmortem | 2026-01-26 | 2026-09-24 | https://github.com/pytorch/pytorch/security/advisories/GHSA-63cw-57p8-fm3p | And bypassable again a year later, across every release up to 2.9.1 | (E) "A vulnerability in PyTorch's weights_only unpickler allows an attacker to craft a malicious checkpoint file (.pth) that, when loaded with torch.load(..., weights_only=True), can corrupt memory and potentially lead to arbitrary code execution." (R) affects ≤ 2.9.1, High, CVSS 8.8, published 2026-01-26 |
| 37 | Meta / PyTorch | Published advisory list | postmortem | 2023-2026 | 2026-09-24 | https://github.com/pytorch/pytorch/security/advisories | The published set is small and two of five concern the checkpoint format | (D) five published advisories: GHSA-63cw-57p8-fm3p (2026-01-26), GHSA-2rj9-7h5r-q4h8 (2025-09-29), GHSA-g6v3-crfc-cggj (2025-09-29), GHSA-53q9-r3pm-6pq6 (2025-04-17), GHSA-hw6r-g8gj-2987 (2023-08-30) |
| 38 | Meta / PyTorch | PyTorch 2.6.0 release notes | vendor | 2025-01-29 | 2026-09-24 | https://github.com/pytorch/pytorch/releases/tag/v2.6.0 | The loader default was flipped deliberately, over two releases | (E) "We are closing the loop on the deprecation that started in 2.4 and flipped torch.load to use weights_only=True by default." |
| 39 | Hugging Face contributor | Issue #153599, torch.export with strict=True fails cases that work in 2.6 |
source | 2025-05-15 | 2026-09-24 | https://github.com/pytorch/pytorch/issues/153599 | Sound capture regressed on a real published model three months before the default was flipped | (R) opened 2025-05-15 by ydshieh; (E) "Unexpected type in sourceless builder transformers.models.bit.configuration_bit.BitConfig"; the report states the test passes with strict=False |
| 40 | Project MONAI | Issue #8632, Torchscript Deprecation | source | 2025-11-14 | 2026-09-24 | https://github.com/Project-MONAI/MONAI/issues/8632 | A downstream medical-imaging framework reads the replacement as weaker than what it replaces | (E) "Torchscript is now fully deprecated in Pytorch 2.9. We should investigate converting usage in MONAI of torch.jit over to torch.export." plus the maintainer's statement that the replacement behaves more like tracing, cannot capture control flow the same way, and that only networks without control flow in forward can currently be exported |
| 41 | Lightning AI | Issue #21293, Update from Torchscript to torch.export |
source | 2025-10-16 | 2026-09-24 | https://github.com/Lightning-AI/pytorch-lightning/issues/21293 | A major training framework began its migration twelve months after the deprecation landed | (E) "Torchscript is deprecated in the most recent releases of Pytorch" and "torch.export is the recommended way to go" |
| 42 | Deep Java Library (AWS) | Issue #3348, Torchscript is in maintenance mode | source | 2024-07-18 | 2026-09-24 | https://github.com/deepjavalibrary/djl/issues/3348 | A JVM serving stack whose entire PyTorch integration is TorchScript asked what happens to it, three months before the deprecation was written into the code | (E) "since Torchscript is already on maintenance mode and it won't be supported to add features or solving bugs" |
| 43 | Meta / PyTorch | Issue #151693, [ONNX] Flip dynamo default to True in torch.onnx.export |
source | 2025-04-18 | 2026-09-24 | https://github.com/pytorch/pytorch/issues/151693 | The interchange exporter was re-based on the new capture stack, with the old one kept as an automatic fallback | (E) "torch.jit.ScriptModule and torch.jit.ScriptFunction will automatically fallback to depreacted torchscript-based exporter" [sic] |
| 44 | Maven Central | org/pytorch group listing |
casestudy | 2026-09 | 2026-09-24 | https://repo1.maven.org/maven2/org/pytorch/ | The Android handover is visible in the artefact names: the mobile line and its replacement are both published under the same group | (D) artefacts present: pytorch_android, pytorch_android_lite, pytorch_android_torchvision, pytorch_android_torchvision_lite, pytorch_java_only, executorch-android, executorch-android-qnn, executorch-android-vulkan, torchserve-endpoint-plugin, torchserve-plugins-sdk, torchvision_ops |
| 45 | npm | executorch package |
casestudy | 2026-09 | 2026-09-24 | https://registry.npmjs.org/executorch | The on-device runtime reaches into a fourth package ecosystem | (R) dist-tags.latest = 0.0.7 |
| 46 | .NET / TorchSharp | NuGet registration index for TorchSharp |
casestudy | 2018-2026 | 2026-09-24 | https://api.nuget.org/v3/registration5-semver1/torchsharp/index.json | An independent binding ecosystem is still shipping against libtorch, on its own slower clock | (R) 64 versions from 0.1.0 (2018-11-13) to 0.107.0 (2026-05-07); one release in 2025 H2, two in 2026 to date |
| 47 | vLLM | vLLM README | source | 2026-09 | 2026-09-24 | https://raw.githubusercontent.com/vllm-project/vllm/main/README.md | The serving layer that replaced the project's own server is built on partial capture | (E) "Automatic kernel generation and graph-level transformations using torch.compile" |
| 48 | Meta / PyTorch | docs/source/community/governance.md |
adr | 2026-09 | 2026-09-24 | https://raw.githubusercontent.com/pytorch/pytorch/main/docs/source/community/governance.md | Technical control is deliberately separated from the funding body, and money cannot buy direction | (E) "Technical governance is strictly separated from business governance." and (E) "Q: What if I am a company looking to use PyTorch internally for development, can I be granted or purchase a board seat to drive the project direction? No, the PyTorch project is strictly driven by the a maintainer project philosophy" and the reference to "the PyTorch Foundation (PTF)" |
| 49 | Meta / PyTorch | RELEASE.md |
vendor | 2026-09 | 2026-09-24 | https://raw.githubusercontent.com/pytorch/pytorch/main/RELEASE.md | The cadence and the deprecation window are written down, and the window is one release | (E) "Following is the release cadence. All future dates below are tentative." plus the published compatibility matrix and the stated support of the latest two minor accelerator versions |
| 50 | Meta / PyTorch | meta-pytorch organisation | source | 2026-09 | 2026-09-24 | https://github.com/meta-pytorch | Meta's own PyTorch-adjacent libraries now sit in a company-named organisation next to the neutral one | (D) repositories listed include torchcodec, torchcomms, torchrec, monarch, autoparallel, flex_shard, tritonparse, captum, attention-gym, compile-graph-break-site; torchtune's issue tracker resolves under this organisation |