Evidence ledger
One row per claim in The reference architecture Netflix retired: 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.
Field guide: Changing policy without redeploying: a decade of Netflix's service-communication stack, read from its own repositories. Research date 2026-09-09. Every URL below was fetched during that session.
A note on the shape of this ledger
The research environment for this dig could reach exactly two hosts: github.com and
raw.githubusercontent.com. Every other host, including Netflix's own engineering blog, USENIX,
arXiv, InfoQ and Hacker News, was refused by the network egress policy. That constraint decided
the method: this guide is built only from artefacts that Netflix and its downstream consumers
publish inside repositories, wikis, issue trackers, pull requests, release notes and the GitHub
advisory database. It contains no engineering-blog posts, no conference talks and no papers, and
where that absence changes what can be claimed, the guide says so.
The upside is that the tiers this leaves are the ones ordinary search never reaches: status notices with commit dates, closed-unmerged pull requests, operator-filed incident threads, and release notes that record what was dropped.
| # | Org | Title | Tier | Published | Checked | URL | Claim taken | Supporting quote or figure |
|---|---|---|---|---|---|---|---|---|
| 1 | Netflix | Ribbon README, "Project Status: On Maintenance" | adr | 2016-04-18 | 2026-09-09 | https://github.com/Netflix/ribbon | Netflix froze Ribbon and moved to gRPC for multi-language reasons | "Recognizing these realities and deficiencies, we are placing Ribbon in maintenance mode... Our team has instead started building an RPC solution on top of gRPC. We are doing this transition for two main reasons: multi-language support and better extensibility/composability through request interceptors." |
| 2 | Netflix | Ribbon README, component status list | adr | 2016-04-18 | 2026-09-09 | https://github.com/Netflix/ribbon | Several open-sourced Ribbon components were never used internally, and the ones that were are wrapped internally | "ribbon-transport: not used"; "Even for the components deployed in production we have wrapped them in a Netflix internal http client and we are not adding new functionality" |
| 3 | Netflix | Ribbon README, promised gRPC open source | adr | 2016-04-18 | 2026-09-09 | https://github.com/Netflix/ribbon | The gRPC load-balancing and discovery interceptors were promised as open source and never shipped | "When we reach that level of confidence we hope to open-source this new approach. We don't expect this to happen before Q3 of 2016." |
| 4 | Netflix | Commit history of Ribbon README.md | source | 2016-04-18 | 2026-09-09 | https://github.com/Netflix/ribbon/commits/master/README.md | The maintenance notice is datable to the day | Commit ba0d2a1, 18 Apr 2016, "Add maintenance project status to README" |
| 5 | Netflix | Ribbon open pull requests | source | n/a | 2026-09-09 | https://github.com/Netflix/ribbon/pulls?q=is%3Apr+is%3Aopen | The README's offer to review community PRs is not borne out by the record | 40 open pull requests; oldest visible #367 "Fix for RoundRobin in Zuul Proxy", 7 Feb 2018 |
| 6 | Netflix | Ribbon issue #243, "RestClient marked deprecated but still used in all the docs" | source | 2015-09-02 | 2026-09-09 | https://github.com/Netflix/ribbon/issues/243 | A documentation/replacement question has stayed open for eleven years | Issue open since 2 Sep 2015, state open at check date |
| 7 | Netflix | Hystrix README, "Hystrix Status" | adr | 2018-11-19 | 2026-09-09 | https://github.com/Netflix/Hystrix | Hystrix was frozen and Netflix redirected new work to adaptive approaches and resilience4j | "Hystrix is no longer in active development, and is currently in maintenance mode."; "Netflix will no longer actively review issues, merge pull-requests, and release new versions of Hystrix." |
| 8 | Netflix | Commit a7df971 adding the Hystrix status section | source | 2018-11-19 | 2026-09-09 | https://github.com/Netflix/Hystrix/commit/a7df971 | The freeze is datable, and its final version pinned to an internal one | Adds "# Hystrix Status"; final release 1.5.18 aligned to internal 1.5.11 |
| 9 | Netflix | Hystrix wiki (home) | casestudy | wiki, last edited 2017 | 2026-09-09 | https://github.com/Netflix/Hystrix/wiki | The scale the library ran at inside Netflix | "Today tens of billions of thread-isolated, and hundreds of billions of semaphore-isolated calls are executed via Hystrix every day at Netflix." |
| 10 | Netflix | Hystrix pull request #2033, Java 11 thread-pool fix | source | opened 2022-11-12 | 2026-09-09 | https://github.com/Netflix/Hystrix/pull/2033 | A real defect fix stayed unmerged until the author deleted their fork | Closed unmerged 11 Aug 2026 when the head repository was deleted; no maintainer explanation on the thread |
| 11 | Netflix | Hystrix repository page | source | n/a | 2026-09-09 | https://github.com/Netflix/Hystrix | A frozen project still carries a large dependent population and a queue nobody drains | 24.5k stars, 4.7k forks, 6 open issues, 52 open pull requests at check date |
| 12 | Netflix | Eureka wiki, home page notice | adr | wiki edit 2018-07-13 | 2026-09-09 | https://github.com/Netflix/eureka/wiki | The Eureka 2.0 rewrite was abandoned in the open | "The existing open source work on eureka 2.0 is discontinued. The code base and artifacts that were released as part of the existing repository of work on the 2.x branch is considered use at your own risk." |
| 13 | Netflix | Eureka wiki, "Eureka at a glance" | source | wiki | 2026-09-09 | https://github.com/Netflix/eureka/wiki/Eureka-at-a-glance | Discovery is deliberately cached and lease-based, so client views lag reality | "The clients from any zone can look up the registry information (happens every 30 seconds)"; "If the client cannot renew the lease for a few times, it is taken out of the server registry in about 90 seconds." |
| 14 | Netflix | Eureka issue #1510, "TimedSupervisorTask: task supervisor rejected the task" | postmortem | 2023-08-07 | 2026-09-09 | https://github.com/Netflix/eureka/issues/1510 | A silently dead refresh thread turns a cache into stale routing for one pod | Reported RejectedExecutionException, cache refresh stopped, "No route to host" for every call after a dependency was redeployed; eureka-client 1.10.17, Spring Cloud 3.1.2 |
| 15 | Netflix | Eureka issue #1073, "Eureka will disable expiration forever in some cases?" | source | 2019-05-30 | 2026-09-09 | https://github.com/Netflix/eureka/issues/1073 | Self-preservation can hold dead instances in the registry indefinitely | "eureka will disable expiration, so there are 10 endpoints... unavailable"; "But what if this is a permanent state?" |
| 16 | Netflix | Eureka releases | source | latest 2024-08-06 | 2026-09-09 | https://github.com/Netflix/eureka/releases | The surviving 2.x line is a Jakarta/Spring Boot compatibility line, not the abandoned rewrite | v2.0.6 (23 Mar 2024), v1.10.19-rc.4 (6 Aug 2024); release notes describe Jakarta EE 9 and Spring Boot 3 support |
| 17 | Netflix | Eureka repository page | source | n/a | 2026-09-09 | https://github.com/Netflix/eureka | Discovery is the one library-era component still maintained | 12.7k stars, 3.8k forks, 109 open issues; org listing shows "Updated Aug 24, 2026" |
| 18 | Netflix | Zuul wiki, "How it works" | source | wiki | 2026-09-09 | https://github.com/Netflix/zuul/wiki/How-It-Works | The gateway's filters are hot-loaded, which is the property that made it survivable | "The source code for each Filter is written to a specified set of directories on the Zuul server that are periodically polled for changes. Updated filters are read from disk, dynamically compiled into the running server, and are invoked by Zuul for each subsequent request." |
| 19 | Netflix | Zuul wiki, "How we use Zuul at Netflix" | source | wiki | 2026-09-09 | https://github.com/Netflix/zuul/wiki/How-We-Use-Zuul-At-Netflix | The gateway is where operational policy is executed, and it composed the whole library stack | Use cases include "route a specific customer or device to a separate API cluster for debugging" and automated stress testing "using dynamic configuration"; integrates Hystrix, Ribbon, Turbine and Archaius |
| 20 | Netflix | Zuul issue #771, "Zuul 3 Improvements" | adr | 2020-04-11, closed not planned | 2026-09-09 | https://github.com/Netflix/zuul/issues/771 | The plan to shed the library era was written down, then dropped as a plan and executed piecemeal | Planned items include "Drop RX as an API type", "Remove Hard Dependency on Groovy, but provide adapter for loading Groovy filters", making the name resolver and load balancer pluggable to remove Eureka and Ribbon dependencies, Servo to Spectator, Archaius 0.7 to Archaius 2 |
| 21 | Netflix | Zuul release v4.0.0 | source | 2024-07-08 | 2026-09-09 | https://github.com/Netflix/zuul/releases/tag/v4.0.0 | Netflix removed its own reactive library from the gateway's API eight years after evangelising it | "Zuul 4.0.0 replaces the RxJava Observable based async filter execution with CompletableFuture." |
| 22 | Netflix | Zuul issue #2021, ByteBuf leaks after upgrade | postmortem | 2026-01-14, closed not planned | 2026-09-09 | https://github.com/Netflix/zuul/issues/2021 | Externally-reported production regressions in the published gateway are not necessarily worked | "LEAK: ByteBuf.release() was not called before it's garbage-collected" after upgrading 2.5.11 to 3.1.4; closed as not planned |
| 23 | Netflix | concurrency-limits README | adr | repo updated 2026-01-16 | 2026-09-09 | https://github.com/Netflix/concurrency-limits | Netflix's stated reason for abandoning human-set limits | "in large distributed systems that auto-scale this value quickly goes out of date and the service falls over by becoming non-responsive"; "we borrow from common TCP congestion control algorithms by equating a system's concurrency limit to a TCP congestion window" |
| 24 | Netflix | Prana README | source | n/a | 2026-09-09 | https://github.com/Netflix/Prana | The sidecar existed in 2014 purely to give non-JVM code the library stack, and was not used internally | "Prana exposes Java based client libraries of various services like Eureka, Ribbon, Archaius over HTTP"; "The current implementation of this project is not used internally at Netflix and therefore updates to the open source have been slow." |
| 25 | Netflix | Servo README | source | n/a | 2026-09-09 | https://github.com/Netflix/servo | The telemetry client was superseded rather than frozen, with a migration target named | "This project receives minimal maintenance to keep software that relies on it working. There is no active development or planned feature improvement." |
| 26 | Netflix | Archaius README (2.x) | source | n/a | 2026-09-09 | https://github.com/Netflix/archaius | The configuration plane is the survivor of the library era, and its purpose is changing behaviour without a restart | "Traditionally applications require a restart whenever configuration changes... Through Archaius, code can have direct access to the most recent configuration without the need to restart."; "Not backwards compatible with 1.x" |
| 27 | Netflix | Conductor README, discontinuation notice | adr | 2023-12-13 | 2026-09-09 | https://github.com/Netflix/conductor | Netflix handed an adopted OSS project back to the community | "Effective December 13, 2023, Netflix will discontinue maintenance of Conductor OSS on GitHub." |
| 28 | Netflix | Maestro README | casestudy | n/a | 2026-09-09 | https://github.com/Netflix/maestro | The internal successor to the orchestrator, with its own scale figure | "a general-purpose workflow orchestrator that provides a fully managed workflow-as-a-service (WAAS)"; "schedules hundreds of thousands of workflows, millions of jobs every day" |
| 29 | Conductor OSS / Orkes | conductor-oss/conductor README | source | n/a | 2026-09-09 | https://github.com/conductor-oss/conductor | The fork, not the origin, now carries maintenance | "Conductor OSS is the continuation of the original Netflix Conductor repository after Netflix contributed the project to the open-source foundation"; "actively maintained by Orkes and the community" |
| 30 | GitHub Advisory Database | GHSA-8gqp-hr9g-pg62 (CVE-2025-26074) | source | 2025-06-30 | 2026-09-09 | https://github.com/advisories/GHSA-8gqp-hr9g-pg62 | Abandonment moves the security burden to whoever forked, and it arrives | Critical, CVSS 9.8, org.conductoross:conductor-core < 3.21.13, OS command injection through the ScriptEvaluator |
| 31 | Spring Cloud (VMware) | Spring Cloud 2020.0 release notes | adr | GA 2021-01-27 | 2026-09-09 | https://github.com/spring-cloud/spring-cloud-release/wiki/Spring-Cloud-2020.0-Release-Notes | The downstream framework removed fourteen Netflix modules in one release, announced 13 months earlier | "The following modules have been removed from spring-cloud-netflix": archaius, concurrency-limits, core, dependencies, hystrix (and dashboard, contract, stream), ribbon, sidecar, turbine (and turbine-stream), zuul, plus starters. "Support for ribbon, hystrix and zuul was removed" |
| 32 | Spring Cloud (VMware) | spring-cloud-netflix issue #3652, "Eureka instance eviction is almost taking 5 mins" | postmortem | 2020-04-05 | 2026-09-09 | https://github.com/spring-cloud/spring-cloud-netflix/issues/3652 | The measured gap between configured lease expiry and actual eviction | Instance stopped 12:59:40, evicted 13:02:26, roughly 2 min 46 s, with lease-expiration-duration-in-seconds=90, eviction timer 9 s and self-preservation disabled |
| 33 | Spring Cloud (VMware) | spring-cloud-netflix issue #1785, Zuul connections stuck in CLOSE_WAIT | postmortem | 2017-03-16 | 2026-09-09 | https://github.com/spring-cloud/spring-cloud-netflix/issues/1785 | Layered pools with an infinite TTL exhaust and block the gateway | "some connections end up in a CLOSE_WAIT state"; "The TTL of the default configuration is set to -1, i.e. infinite"; pool saturating despite maxPerRoute of 20 |
| 34 | Spring Cloud (VMware) | spring-cloud-netflix issues matching hystrix/ribbon/retry | source | 2018-2021 | 2026-09-09 | https://github.com/spring-cloud/spring-cloud-netflix/issues?q=is%3Aissue+hystrix+timeout+ribbon+retry | The layered-timeout class is a recurring operator problem, not a one-off | Nine issues including #3831 "ZuulException: Hystrix Readed time out" (7 Jun 2021), #3303 "Greenwich.M3 ribbon retry does not work", #2987 "Potential bug with timeout warnings in Ribbon and Hystrix" |
| 35 | gRPC | Proposal A27, "xDS-Based Global Load Balancing" | adr | last updated 2020-03-18 | 2026-09-09 | https://github.com/grpc/proposal/blob/master/A27-xds-global-load-balancing.md | The industry's answer to in-process routing policy is a pub/sub control plane, not a fatter client | Author Mark D. Roth; gRPC moves from grpclb to xDS because "the popular Envoy proxy uses the xDS API for many types of configuration, including load balancing, and that API is evolving into a standard" |
| 36 | resilience4j | resilience4j repository | source | n/a | 2026-09-09 | https://github.com/resilience4j/resilience4j | The named successor is a decorator library with no runtime of its own | "a fault tolerance library designed for functional programming"; "you have the choice to select the decorators you need and nothing else"; 10.8k stars, 1.5k forks |
| 37 | Netflix | Netflix organisation repository listing | source | n/a | 2026-09-09 | https://github.com/orgs/Netflix/repositories?sort=updated | The current shape of the estate: what is still touched and what is not | Zuul updated 2 Sep 2026, Eureka 24 Aug 2026, Archaius 29 Jul 2026, concurrency-limits 16 Jan 2026, netflix-commons 17 Dec 2025, Hystrix 17 Dec 2025, Conductor archived, updated 22 Dec 2023 |
| 38 | Netflix | Netflix organisation repository search for "grpc" and "rpc" | source | n/a | 2026-09-09 | https://github.com/orgs/Netflix/repositories?q=grpc | The 2016 promise to open source the gRPC replacement has no public artefact ten years on | Search for "grpc" returns only the archived Conductor; search for "rpc" returns "No repositories matched your search" |
| 39 | Netflix | Falcor repository | source | n/a | 2026-09-09 | https://github.com/Netflix/falcor | The pre-GraphQL API-shaping library still exists but stopped being the direction | 10.6k stars, 444 forks, v2.0 described as the current stable release |
| 40 | Netflix | DGS framework README | source | n/a | 2026-09-09 | https://github.com/Netflix/dgs-framework | The current API layer is a GraphQL framework tied to Spring Boot versions, with a stated support horizon | DGS 11+ supports Spring Boot 4 and is "Actively maintained"; 10.x backports "until the second half of 2026"; 5.x "No longer maintained" |
| 41 | Netflix | RxNetty repository | source | n/a | 2026-09-09 | https://github.com/Netflix/RxNetty | The transport layer under the reactive era stopped being developed | "0.5.x is the current release branch. This is no longer under active development but will have major patches applied and will accept pull requests." |
Tier mix
| Tier | Count |
|---|---|
| postmortem (operator-filed incident threads) | 4 |
| source (repositories, issues, PRs, releases, listings) | 26 |
| adr (status notices, design proposals, release-removal records) | 9 |
| casestudy (scale figures published in-repo) | 2 |
| blog / paper / talk | 0, and the reason is stated above |
Two distinct hosts, github.com and raw.githubusercontent.com, for the same reason. Five
organisations are represented: Netflix, Spring Cloud (VMware), gRPC, resilience4j and Conductor
OSS/Orkes, plus the GitHub Advisory Database.