ARCHITECTURE · 02
The pipeline.
How an official Ruby release becomes a runtime package, and how a runtime package becomes your single executable — across the tamatebako fleet, each repo shipping its own versioned artifact.
Stage by stage.
Each row names the artifact you can download and verify today — or marks the gap as planned.
| STAGE | REPO | WHAT IT SHIPS | STATUS |
|---|---|---|---|
| Upstream | ruby-lang.org | Official Ruby source tarballs — the ultimate input of the whole chain. | EXTERNAL |
| Release monitor | tamatebako/ruby · release-monitor.yml | Daily cron: diffs official releases against versions.yml, onboards new rubies (lint → PR → tag → src release → runtime dispatch), files a named issue when a patch drifts. | SHIPPED |
| Patched source | tamatebako/ruby | v0.2.1: 76 scenario src tarballs — 19 rubies × { linux-gnu (unsuffixed), linux-musl, msys-pass1, msys-pass2 } — plus SHA256SUMS. The only place patches are ever applied. | SHIPPED |
| Runtime factory | tebako-runtime-ruby | v0.15.9: 114 runtime packages (19 rubies × 6 POSIX platforms) + manifest.json + SHA256SUMS.txt. Builds patched source in tebako-ci-containers, links prebuilt libtfs, embeds the modern-API entry driver. Rolling out: a .tfs runtime image published alongside each executable (the runtime-as-image split). | SHIPPED |
| VFS engine | libtfs | v0.13.0: modern-only tebako_fs_* ABI (24 exports, multi-mount), pluggable dwarfs/squashfs/zip backends, and the mkdwarfs + tebakofs binaries — now also the parity oracle for the Rust tfs crate. | SHIPPED |
| Compression foundation | dwarfs-t | The thrift-free DwarFS fork underneath libtfs. C++ forever by decision; never archived — it is the foundation, not a legacy repo. | SHIPPED |
| Bootstrap | tebako-bootstrap | v0.2.0: six platform launchers (32 KB – 908 KB) — part A of every lean/fat package. | SHIPPED |
| Build infrastructure | tebako-ci-containers | The container images the runtime matrix builds in. | SHIPPED |
| Packager | tebako gem | press (lean/fat/classic), scenario + Gemfile handling, runtime/bootstrap resolution, cache CLI. The reference implementation of press semantics — retires at 0.15.x once the Rust CLI ships releases. | SHIPPED |
| Packager (Rust) | tebako-rs · tebako-cli | The self-hosting CLI: lean/fat press + cache, golden byte-parity with the gem, everything in-process (tebako-http downloads, dwarfs-t Writer images). Code shipped; distribution arrives with the tebako-rs release pipeline. | SHIPPED |
| Cross-repo dispatch | libtfs → tebako-runtime-ruby | Today only ruby → src → runtime is automated (the monitor). A libtfs release triggering runtime rebuilds is designed but not yet wired. | PLANNED |
Why so many repos?
Because each artifact has its own cadence and its own contract. Patched Ruby source changes when Ruby changes; runtimes change when libtfs or the source changes; the gem changes when press semantics change. Versioned releases at every boundary mean any stage can be rebuilt, pinned, or audited without touching the others — and the manifest.json contract means the packager never hardcodes a runtime matrix.