Evidence ledger 30 sources Checked 27 Sep 2026

Evidence ledger

One row per claim in Boundaries without a network hop: ten years of Shopify, read from its own artefacts: 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.

Guide: Boundaries without a network hop: ten years of Shopify, read from its own artefacts Research date: 2026-09-27. Every URL below was fetched during that session.

Environment limit, stated up front. The research environment's egress policy allowed github.com, raw.githubusercontent.com and the package registries (rubygems.org, crates.io, registry.npmjs.org), and refused shopify.engineering, arxiv.org, dl.acm.org, usenix.org, youtube.com and aws.amazon.com. So this guide is built from repository artefacts and registry timestamps only. No Shopify engineering-blog post, conference talk or peer-reviewed paper is cited, which is why the evidence wall carries no blog, talk or paper tier. Where a claim would have needed one of those, the ledger says so.

# Org Title Tier Published Checked URL Claim I take from it Supporting quote or figure
1 Shopify Shopify org repositories, archived filter source live 2026-09-27 https://github.com/orgs/Shopify/repositories?q=archived%3Atrue The estate is big enough that its retirements are a record in themselves Page reports "523" archived repositories; the unfiltered listing reports "1,200+"
2 Shopify shopify-ruby-definitions source 2026-09-26 (repo activity) 2026-09-27 https://github.com/Shopify/ruby-definitions Shopify builds and runs its own patched CRuby, versioned pshopify "This repository contains ruby-build definitions of Rubies we use at Shopify. These builds are API compliant with release Rubies, but with additional backports for bugfixes and performance." Versions listed run 3.0.0-pshopify9 to `3.2.2-pshopify4"
3 RubyGems shopify-ruby-definitions versions API source 2023-10-11 (last) 2026-09-27 https://rubygems.org/api/v1/versions/shopify-ruby-definitions.json The published gem is three years staler than the fork it describes 5 versions, first 0.0.1 2023-06-01, last 1.4.0 2023-10-11
4 Shopify Shopify/ruby branches source 2026-09-21 (branch) 2026-09-27 https://github.com/Shopify/ruby/branches/all The language fork is current and carries a patch line per upstream release "forked from ruby/ruby"; branch v4.0.7-pshopify1 updated "Sep 21, 2026"; branches zjit-codegen/calls, zjit-block-params, force_encoding-HIR
5 Shopify Shopify/ruby issues source 2026-09-22/24 2026-09-27 https://github.com/Shopify/ruby/issues Day-to-day work on a CRuby subsystem is tracked in Shopify's fork, not upstream Open issues #1060-#1070 all prefixed "ZJIT:", e.g. #1067 "ZJIT: Internal compiler error when constant-folding LoadField", authors tekknolagi, k0kubun, dak2
6 Ruby core doc/jit/zjit.md adr master 2026-09-27 https://raw.githubusercontent.com/ruby/ruby/master/doc/jit/zjit.md ZJIT is a method-based, profile-guided compiler, and its bug tracker is Shopify's fork "ZJIT is a method-based just-in-time (JIT) compiler for Ruby. It uses profile information from the interpreter to guide optimization in the compiler."; "please open a ticket on [the official Ruby bug tracker] (or, if you don't want to make an account, [on Shopify/ruby])"
7 Ruby core doc/jit/yjit.md adr master 2026-09-27 https://raw.githubusercontent.com/ruby/ruby/master/doc/jit/yjit.md YJIT is a lazy basic-block-versioning compiler and trades memory for speed "It lazily compiles code using a Basic Block Versioning (BBV) architecture."; "YJIT will use more memory than the Ruby interpreter because the JIT compiler needs to generate machine code in memory"
8 Ruby core NEWS for Ruby 3.1.0 source 2021-12 2026-09-27 https://raw.githubusercontent.com/ruby/ruby/master/doc/NEWS/NEWS-3.1.0.md YJIT arrived as experimental, with Shopify's own template workload as a headline benchmark "YJIT: New experimental in-process JIT compiler"; "Performance improvements on benchmarks based on real-world software, up to 22% on railsbench, 39% on liquid-render."
9 Ruby core NEWS for Ruby 3.2.0 source 2022-12 2026-09-27 https://raw.githubusercontent.com/ruby/ruby/master/doc/NEWS/NEWS-3.2.0.md Production-readiness was declared on the strength of a year in production, and building Ruby now needs Rust "YJIT is no longer experimental * Has been tested on production workloads for over a year and proven to be quite stable."; "Building YJIT now requires Rust 1.58.0+"; "The default --yjit-exec-mem-size is changed to 64 (MiB)."
10 Ruby core NEWS for Ruby 3.3.0 source 2023-12 2026-09-27 https://raw.githubusercontent.com/ruby/ruby/master/doc/NEWS/NEWS-3.3.0.md The JIT's defaults are now application-size dependent, and are tuned against Shopify's process model "--yjit-call-threshold is automatically raised from 30 to 120 when the application has more than 40,000 ISEQs."; "Better copy-on-write behavior on servers reforking with Pitchfork"
11 Ruby core NEWS for Ruby 3.4.0 source 2024-12 2026-09-27 https://raw.githubusercontent.com/ruby/ruby/master/doc/NEWS/NEWS-3.4.0.md JIT memory became one budgeted number "--yjit-mem-size introduces a unified memory limit (default 128MiB) to track total YJIT memory usage"
12 Ruby core NEWS for Ruby 4.0.0 source 2025-12 2026-09-27 https://raw.githubusercontent.com/ruby/ruby/master/doc/NEWS/NEWS-4.0.0.md The second compiler shipped slower than the first, and upstream says so plainly "As of Ruby 4.0.0, ZJIT is faster than the interpreter, but not yet as fast as YJIT. We encourage experimentation with ZJIT, but advise against deploying it in production for now."; "When building Ruby, Rust 1.85.0 or later is required to include ZJIT support."
13 Shopify Shopify/zjit README (archived) source 2025-05-14 2026-09-27 https://raw.githubusercontent.com/Shopify/zjit/master/README.md The exit door for this kind of work is upstream, and the repository says so "ZJIT development has moved. We have upstreamed the project into ruby/ruby in the zjit directory. This repository is mostly for historical interest."
14 Rails PR #49947, enable YJIT by default adr 2023-11-07 2026-09-27 https://github.com/rails/rails/pull/49947 A framework default turned one company's compiler into the industry's default runtime "Enable YJIT by default if running Ruby 3.3+"; "There was many public reports of 15-25% latency improvements for Rails apps that did enable Ruby 3.2 YJIT, and in 3.3 it's even better."
15 Shopify packwerk README source 2026-08-26 (last release) 2026-09-27 https://raw.githubusercontent.com/Shopify/packwerk/main/README.md The boundary check is deliberately incomplete, and names its blind spot "Packwerk is designed to avoid false positives ... at any cost, and we pay the cost by accepting a small number of false negatives"; "Method calls and objects passed around the application are completely ignored."
16 Shopify packwerk USAGE.md adr main 2026-09-27 https://raw.githubusercontent.com/Shopify/packwerk/main/USAGE.md The mechanism that makes a boundary adoptable on existing code is a recorded-debt file "Ruby does not provide a good solution to enforcing boundaries between code."; sections "Recording existing violations" and "Understanding the package todo file"
17 RubyGems packwerk versions API source 2020-09-23 first 2026-09-27 https://rubygems.org/api/v1/versions/packwerk.json Dates the build-time boundary decision and shows it is still maintained 28 versions, first 1.0.0 2020-09-23, last 3.3.1 2026-08-26
18 Shopify packwerk issue #164 source 2021-12-09 2026-09-27 https://github.com/Shopify/packwerk/issues/164 An adopter, not the owner, found the CI cost of the boundary check "[Bug Report] Max RSS is Significantly Higher in Version 2.0"; v1.4 "Maximum resident set size (kbytes): 83560" against v2.0 "334968"; "so much higher that we will need to increase the resource class of our CI nodes"
19 Shopify tapioca README source 2026-09-15 (last release) 2026-09-27 https://raw.githubusercontent.com/Shopify/tapioca/main/README.md Gradual typing in a dynamic language needs a generated-artefact pipeline "It surfaces types and methods from many sources that Sorbet cannot otherwise see - such as gems, Rails and other DSLs - compiles them into RBI files"; feature list includes "Synchronization validation for your CI"
20 RubyGems sorbet versions API source 2018-06-02 first 2026-09-27 https://rubygems.org/api/v1/versions/sorbet.json The type checker ships continuously, which is the real cost profile of adopting it 1,934 versions, first 0.0.1.pre.prealpha 2018-06-02, last 0.6.13508 2026-09-25
21 Shopify Shopify/sorbet source live 2026-09-27 https://github.com/Shopify/sorbet The type checker is consumed as a fork "forked from sorbet/sorbet"
22 Shopify rubydex README source 2025-08-19 first release 2026-09-27 https://raw.githubusercontent.com/Shopify/rubydex/main/README.md A third generation of Ruby analysis is being built, in Rust, as shared infrastructure "This project is a high-performance static analysis toolkit for the Ruby language. The goal is to be a solid foundation to power a variety of tools, such as type checkers, linters, language servers and more."
23 RubyGems rubydex versions API source 2025-08-19 first 2026-09-27 https://rubygems.org/api/v1/versions/rubydex.json The pace of the new toolchain work 124 versions, first 0.0.1 2025-08-19, last 0.4.1 2026-09-02
24 Shopify liquid-c README source 2024-01-24 (last release) 2026-09-27 https://raw.githubusercontent.com/Shopify/liquid-c/main/README.md The C-extension answer to template speed was measured, then abandoned "Warning: This project is no longer maintained."; benchmark in README: parse 29.527 i/s against 90.672 i/s, render 89.403 against 163.871, parse & render 20.474 against 50.165, on ruby-3.0.2
25 RubyGems liquid-c versions API source 2024-01-24 last 2026-09-27 https://rubygems.org/api/v1/versions/liquid-c.json Dates the end of the C-extension line 9 versions, first 0.0.1 2014-10-06, last 4.2.0 2024-01-24
26 Rails bootsnap README source main 2026-09-27 https://raw.githubusercontent.com/Shopify/bootsnap/main/README.md The only first-party Shopify platform figure in this corpus, and the split of where the win comes from "The core Shopify platform -- a rather large monolithic application -- boots about 75% faster, dropping from around 25s to 6.5s."; "about 25% of this gain can be attributed to compile_cache_* features; 75% to path caching"
27 Rails bootsnap repository, formerly Shopify/bootsnap source live 2026-09-27 https://github.com/Shopify/bootsnap The Shopify path now serves rails/bootsnap, which is how GitHub records a transfer Page renders as "rails/bootsnap", description "Boot large Ruby/Rails apps faster", with no move notice
28 Rails bootsnap issue #572 source 2026-09-04 2026-09-27 https://github.com/rails/bootsnap/issues/572 A build-time cache can return a plausible wrong value rather than failing "precompile caches false instead of the document when a file is edited without changing its byte size"; "bs_precompile reads the source file twice from the same file descriptor without rewinding; the second read hits EOF and yields an empty string"; "bs_fetch already guards against this, bs_precompile doesn't"
29 Rails bootsnap issue #529 source 2026-06 (listing date) 2026-09-27 https://github.com/rails/bootsnap/issues/529 Compile caches are a memory-safety surface, and the failure is intermittent "crash loading aws-sdk-s3"; reporter sees it "approximately 5% of the time" in CI after upgrading 1.20.1 to 1.21.1; crash reported as "corrupted double-linked list" inside load_from_binary
30 Shopify pitchfork README source 2026-01-28 (last release) 2026-09-27 https://raw.githubusercontent.com/Shopify/pitchfork/master/README.md The process model was rebuilt so JIT-warmed memory could be shared "Reforking: pitchfork can be configured to periodically promote a warmed-up worker as the new template from which workers are forked. This dramatically improves the proportion of shared memory"
31 RubyGems pitchfork versions API source 2022-10-05 first 2026-09-27 https://rubygems.org/api/v1/versions/pitchfork.json Dates the reforking server 24 versions, first 0.1.0 2022-10-05, last 0.18.2 2026-01-28
32 Shopify shopify-scripts, archived source archived 2024-09-03 2026-09-27 https://github.com/Shopify/shopify-scripts The first-generation extension point ran merchant Ruby on Shopify's servers, and was given a removal date "This repository was archived by the owner on Sep 3, 2024."; "Shopify Scripts is deprecated and will be removed on August 28, 2025."; "Shopify Scripts are written in a stripped-down version of Ruby"
33 Shopify ess, Enterprise Script Service source live 2026-09-27 https://github.com/Shopify/ess The Scripts-era sandbox was a child process, seccomp and quotas README: "a thin Ruby API layer that spawns a process, the enterprise_script_engine, to execute an untrusted Ruby script"; "spawns an mruby-engine with seccomp sandboxing"; parameters include "timeout, instruction quotas, and memory limits"
34 Shopify mruby-engine source live 2026-09-27 https://github.com/Shopify/mruby-engine The guest language was a second, smaller Ruby implementation "MRuby engine is a sandboxed scripting engine. It wraps mruby into a gem that can be included in any Ruby application."
35 Bytecode Alliance javy README, formerly Shopify/javy source live 2026-09-27 https://raw.githubusercontent.com/Shopify/javy/main/README.md The JS-to-Wasm toolchain left Shopify for a foundation, and its module-size economics are published "A Bytecode Alliance project"; "Javy can create very small Wasm modules in the 1 to 16 KB range with use of dynamic linking. The default static linking produces modules that are at least 869 KB in size."
36 crates.io javy crate source 2023-05-17 first 2026-09-27 https://crates.io/api/v1/crates/javy Dates the Wasm-guest toolchain crate created 2023-05-17
37 Shopify function-runner source live 2026-09-27 https://raw.githubusercontent.com/Shopify/function-runner/main/README.md The guest contract is a Wasm module with JSON in and JSON out "This is a simple CLI (function-runner) which allows you to run Wasm Functions intended for the Shopify Functions infrastructure. Functions will run using the provided JSON input file"
38 Shopify shopify-function-wasm-api source 2026-09-14 activity 2026-09-27 https://raw.githubusercontent.com/Shopify/shopify-function-wasm-api/main/README.md The host/guest boundary is a generated shim, not a language binding Components listed as "Provider", "Core", "API" and "Trampoline"; the trampoline "augments Wasm modules to interface with the provider" and "Handles memory sharing between guest and provider modules"
39 Shopify deterministic-wasi-ctx source 2026-09-24 activity 2026-09-27 https://raw.githubusercontent.com/Shopify/deterministic-wasi-ctx/main/README.md Determinism was engineered into the sandbox so guest results can be cached "Determinism refers to the property that a provided WASI function will always return the same series of results for the same series of invocations."; "This can be useful in a variety of contexts. For example, caching the results of invoking a function in a Wasm module."
40 Bytecode Alliance Wasmtime advisory GHSA-vqjp-4c8c-hfgg postmortem 2026-08-20 2026-09-27 https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-vqjp-4c8c-hfgg The rented isolation boundary failed, and the patch spans four release lines "Filesystem sandbox escape when paths or symlinks contain trailing slashes", severity High; "contained a bug which allowed guests to escape their filesystem sandbox and read/write external files and directories"; "Wasmtime 24.0.13, 36.0.14, 46.0.3, and 47.0.4 are being released with this advisory"
41 Bytecode Alliance Wasmtime security advisories index postmortem 2026-06 to 2026-09 2026-09-27 https://github.com/bytecodealliance/wasmtime/security/advisories The cadence of sandbox defects is the real operational cost of renting isolation 10 advisories listed between 2026-06-15 and 2026-09-24, including "guest can panic host through filesystem datetime overflow", "outgoing HTTP body write allows guest-driven host memory exhaustion (DoS)"
42 Shopify ghostferry README source live 2026-09-27 https://raw.githubusercontent.com/Shopify/ghostferry/main/README.md Moving a tenant's data between instances is an owned tool with a formal specification "Ghostferry is a library that enables you to selectively copy data from one mysql instance to another with minimal amount of downtime."; "An overview of Ghostferry's high-level design is expressed in the TLA+ specification"
43 Shopify ghostferry technical overview adr main 2026-09-27 https://raw.githubusercontent.com/Shopify/ghostferry/main/docs/technicaloverview.md The cutover is a deliberate write freeze, priced in seconds to minutes "For data integrity reasons, Ghostferry mandates that you stop writes to the dataset you are copying at a stage of execution called cutover."; "This process has some downtime between step 5 and step 7 ... In most cases this should be on the order of seconds to minutes."
44 Shopify ghostferry tags source 2026-09-24 latest 2026-09-27 https://github.com/Shopify/ghostferry/tags The data-movement tool is still under active development eight years on Tags include v1.3.1 (Apr 15, 2026) and canary/v1.4.0-gtids-rc-1 (Sep 21, 2026)
45 Vitess ADOPTERS.md source main 2026-09-27 https://raw.githubusercontent.com/vitessio/vitess/main/ADOPTERS.md Shopify partitions MySQL with an adopted system rather than a built one Shopify is listed among "known adopters of Vitess"
46 Shopify semian README source 2026-09-07 last release 2026-09-27 https://raw.githubusercontent.com/Shopify/semian/main/README.md The failure boundary inside the process is a bulkhead plus a circuit breaker, coordinated by SysV semaphores "Semian is a library for controlling access to slow or unresponsive external services to avoid cascading failures."; "Bulkheading. Controlling the concurrent access to a single resource, access is coordinated server-wide with SysV semaphores"
47 Shopify krane README source 2026-01-08 last release 2026-09-27 https://raw.githubusercontent.com/Shopify/krane/main/README.md The deploy boundary is a wrapper whose product is a verdict, not a rollout "This project used to be called kubernetes-deploy."; "Especially in a CI/CD environment, we need a clear, actionable pass/fail result for each deploy. Providing this was the foundational goal of krane"
48 RubyGems krane and kubernetes-deploy versions APIs source 2017-01-18 to 2026-01-08 2026-09-27 https://rubygems.org/api/v1/versions/kubernetes-deploy.json Dates the Kubernetes move and the rename kubernetes-deploy: 101 versions, first 0.1.0 2017-01-18, last 1.0.0.pre.2 2020-07-28. krane: 60 versions, first 1.0.0 2019-11-18, last 3.9.1 2026-01-08
49 npm @shopify/hydrogen and @shopify/cli source 2021-08-16, 2022-01-14 first 2026-09-27 https://registry.npmjs.org/@shopify%2fhydrogen Dates the storefront and tooling layer, where the churn is fastest @shopify/hydrogen: 1,445 versions, first 1.0.0-alpha.11 2021-08-16, latest 2026.10.0-preview.3 2026-09-11. @shopify/cli: 2,796 versions, first 0.1.1 2022-01-14
50 Shopify hydrogen-v1, archived source archived, last activity 2025-03-19 2026-09-27 https://github.com/Shopify/hydrogen-v1 Even the newest layer retires whole generations Listed as a public archive, "React framework for building Shopify-powered custom storefronts", updated Mar 19, 2025

Searches that returned nothing, which is itself evidence

Query Result Reading
org:Shopify postmortem (issues) 0 results, 2026-09-27 Shopify publishes no incident review inside its own repositories
org:Shopify "caused an outage" (issues) 0 results, 2026-09-27 The company's failure record is not in this corpus; the substrate's is
repo:Shopify/packwerk slow OR performance (issues) 10 results, one with numbers (#164) Scale limits of the boundary checker are reported by adopters, not measured in public by the owner

Claims I wanted and could not source here

  • Shopify's own traffic, shard count or peak-throughput figures. These are published on shopify.engineering, which the environment could not reach.
  • The YJIT VMIL 2021 paper, referenced from doc/jit/yjit.md but hosted on dl.acm.org, blocked.
  • Any statement of why liquid-c stopped being maintained. The repository says only that it is unmaintained; the correlation with YJIT's arrival is inference, and is labelled as such.

Rows added after the first pass

# Org Title Tier Published Checked URL Claim I take from it Supporting quote or figure
51 Go module proxy ghostferry module versions source live 2026-09-27 https://proxy.golang.org/github.com/!shopify/ghostferry/@v/list The published module line is narrower than the release tags the team cuts List returns v1.3.0, v1.3.1, v1.2.0
52 PyPI ShopifyAPI release history source 2024-11-04 last 2026-09-27 https://pypi.org/pypi/ShopifyAPI/json Registry-against-repository drift repeats outside Ruby 78 releases, first 0.1.0 2011-08-23, last 12.7.0 2024-11-04, while the repository listing shows activity "Updated Aug 25, 2026"