Skip to main content

MEP-76 implementation tracking

Per-phase tracking for MEP-76 Mochi+Ruby package bridge. Status values: NOT STARTED, IN PROGRESS, BLOCKED, LANDED, DEFERRED. Commit is the merge commit short SHA on main.

A phase is LANDED only when its gate is green for every target in the runtime matrix. Missing surfaces become N.1, N.2, ... sub-phases per the umbrella-phase coverage rule.

Phase status

PhaseTitleStatusCommitTracking page
0Skeleton: package3/ruby/ layout (rbs/, index/, typemap/, wrapper/, build/, errors/, gemspec/)LANDED759095dbphase-00
1RubyGems compact-index client (https://index.rubygems.org/info/\<gem>, SHA256 + BLAKE3 verify)LANDED759095dbphase-01
2RBS bundled-sig ingest (walk sig/**/*.rbs from gem tarball)LANDED759095dbphase-02
3gem_rbs_collection fallback ingest (fetch + pin gems.json manifest)LANDED759095dbphase-03
4YARD doc fallback ingest (yard doc JSON, best-effort type extraction)LANDED759095dbphase-04
5RBS-to-Mochi type mapping + SkipReport emitLANDED759095dbphase-05
6Ruby shim emit (shim.rb require + method wrappers + shim.mochi extern fn declarations)LANDED759095dbphase-06
7import ruby "<gem>@<semver>" as <alias> grammar + parserLANDED759095dbphase-07
8Build orchestration (Gemfile injection into MEP-56 emit pipeline + bundle install)LANDED759095dbphase-08
9mochi.lock [[ruby-package]] integration + --check modeLANDED759095dbphase-09
10TargetRubyGem publish metadata + gemspec emit from mochi.toml [ruby.publish]LANDED759095dbphase-10
11Trusted publishing (rubygems.org OIDC flow, gem push, provenance attestation)LANDED0b1a8e6bphase-11
12Native C extension gems (pre-built binary gem selection + pure-Ruby fallback map)LANDED0b1a8e6bphase-12
13Ractor/Fiber async bridge ([ruby.async] framework opt-in)LANDED759095dbphase-13

Runtime matrix

Phase rangeCI targetNotes
0-9CRuby 3.2, CRuby 3.4 on ubuntu-latestGated against the 20-gem fixture corpus
10-11CRuby 3.2, CRuby 3.4 on ubuntu-latestGated against the mock-rubygems-registry harness (no live network)
12CRuby 3.2, CRuby 3.4 on ubuntu-latest + macos-latestFixture corpus extended to include native extension gems (nokogiri, pg)
13CRuby 3.2, CRuby 3.4, TruffleRuby 24.x on ubuntu-latestFixture corpus extended to include async gems (async, falcon)

Fixture corpus

The 20-gem fixture corpus (May 2026 top-downloaded-on-rubygems.org, excluding deprecated or stdlib-replaced gems):

nokogiri, rails, rake, bundler, activesupport, activerecord, actionpack, devise, rspec, rspec-core, rubocop, pry, httparty, faraday, redis, pg, grpc, aws-sdk-s3, oj, dry-types.

Phases 0-9 assert golden SkipReport counts against this corpus. Phases 12-13 extend the corpus with native extension gems (nokogiri, pg) and async gems (async, falcon).

Implementation location

The bridge lives at package3/ruby/ in the repo root:

package3/ruby/
README.md # pointer to MEP-76 spec
errors/ # SkipReason + BridgeError (phase 0)
build/ # Gemfile synthesiser + bundle install driver (phase 0)
semver/ # rubygems-flavoured semver parser (phase 1)
index/ # compact-index client + content-addressed cache (phase 1)
rbs/ # RBS parser + bundled-sig walker (phase 2)
typemap/ # RBS-to-Mochi type table + SkipReport (phase 5)
wrapper/ # shim.rb + shim.mochi emitter (phase 6)
gemspec/ # gemspec renderer from mochi.toml (phase 10)
publish/ # rubygems.org OIDC publish + gem push (phase 11)

Cross-references