MEP-73 implementation tracking
Per-phase tracking for MEP-73 Mochi+Rust package manager. Status values: NOT STARTED, IN PROGRESS, BLOCKED, LANDED, DEFERRED. Commit is the merge commit short SHA on main (or, for the umbrella PR, the in-branch commit on mep/0073-rust-package).
A phase is LANDED only when its gate is green for every target (consume direction + publish direction where applicable). Missing surfaces become N.1, N.2, ... sub-phases per the umbrella-phase coverage rule.
Phase status
| Phase | Title | Status | Commit | Tracking page |
|---|---|---|---|---|
| 0 | Skeleton: package3/rust/ layout + cargo workspace plumbing | LANDED | 2dc3b34f | phase-00 |
| 1 | Sparse-index client (index.crates.io reader, sha256 + blake3 download verify) | LANDED | a3c263fb | phase-01 |
| 2 | Rustdoc-JSON ingest + ApiSurface emit | LANDED | 1cd97c1b | phase-02 |
| 3 | Closed type-mapping table (scalars / strings / collections / Option / Result / Tuple / Struct / Enum) | LANDED | 0be87e7f | phase-03 |
| 4 | Wrapper crate synthesiser (extern "C" surface, MochiString / MochiSlice / opaque handles) | LANDED | 2bf1474c | phase-04 |
| 5 | Mochi-side extern fn emitter + alias shim file generation | LANDED | 6da45d5d | phase-05 |
| 6 | import rust "<crate>@<semver>" as <alias> grammar + parser | LANDED | 8a4e5b8d | phase-06 |
| 7 | Build orchestration: workspace synth + cargo build invocation + artifact link | LANDED | 8f611d65 | phase-07 |
| 8 | mochi.lock [[rust-package]] integration + --check mode | LANDED | d50fc563 | phase-08 |
| 9 | TargetRustLibrary emit (rlib + cdylib + Cargo.toml + cbindgen) | LANDED | 6e966397 | phase-09 |
| 10 | Trusted publishing (mochi pkg publish --to=crates.io) Sigstore OIDC flow | LANDED | 003e897f | phase-10 |
| 11 | Async bridge (tokio runtime singleton + block_on entry) | LANDED | fce8fc5e | phase-11 |
| 12 | Monomorphisation ([rust.monomorphise] manifest + per-instantiation wrapper) | LANDED | 37768e85 | phase-12 |
| 13 | Embedded / no_std subset (profile = "embedded" + alloc opt-in) | LANDED | 032a842d | phase-13 |
Per-phase fields
Each phase tracking page documents (or will document, once the phase begins):
- Gate: the test or check that must pass for the phase to be LANDED.
- Files to touch: the bridge-side files (Go) and emit-side files (Rust template) the phase introduces or modifies.
- Fixtures: which of the 24-crate fixture corpus the phase validates against.
- Skip count: the expected SkipReport count per fixture crate (golden numbers).
- Sub-phase decomposition (if needed): N.1, N.2, ... entries when an upstream constraint forces splitting.
Fixture corpus
The 24-crate fixture corpus (April 2026 top-25-most-downloaded-on-crates.io minus the long-deprecated lazy_static):
anyhow, thiserror, serde, regex, rayon, itertools, once_cell, time, uuid, url, base64, hex, sha2, blake3, rand, rand_chacha, num_cpus, bytes, smallvec, indexmap, ahash, parking_lot, crossbeam, tokio.
Each phase that touches the type-mapping or wrapper layer asserts golden counts against this corpus. The corpus is regenerated quarterly to track crate API drift.
Implementation location
The bridge lives at package3/rust/ in the repo root:
package3/rust/
README.md # pointer to MEP-73 spec
errors/ # SkipReason + BridgeError (phase 0)
build/ # Workspace + Driver + Cargo.toml renderer (phase 0)
semver/ # cargo-flavoured semver parser (phase 1)
sparse/ # sparse-index client + content-addressed cache (phase 1)
rustdoc/ # rustdoc-types Go parser + ApiSurface walker (phase 2)
typemap/ # closed type table + Mochi/FFI rendering (phase 3)
wrapper/ # extern-C wrapper synthesiser (phase 4)
emit/ # Mochi extern fn emitter (phase 5)
publish/ # crates.io publish + Sigstore (phase 10)
embedded/ # no_std subset (phase 13)
The package3/rust/ location is shared with the broader MEP-57 polyglot package work (where package3/ is the v3 package-system tree).
Status snapshot
As of 2026-05-30 00:41 (GMT+7): all 14 phases (0-13) LANDED (skeleton + sparse-index client + cargo semver + rustdoc-JSON ingest + closed type-mapping table + extern-C wrapper synthesiser + Mochi extern-fn emitter + import rust grammar + build orchestration pipeline + mochi.lock [[rust-package]] schema + drift checker + TargetRustLibrary publish-direction emit with cbindgen header + trusted-publishing flow with Sigstore-keyless attestation bundle and crates.io upload wire-format + async-fn bridge with lazy tokio runtime singleton and block_on wrapper bodies + monomorphisation pipeline with [rust.monomorphise] manifest parsing + per-instantiation symbol mangling + turbofish call-site rendering + embedded no_std + alloc profile with async refusal and default-features = false upstream pin). The MEP spec, research bundle, and implementation are all landed; the bridge is ready for integration with MEP-53's build driver.
Cross-references
- MEP-73 spec for the normative design.
- MEP-73 research bundle for the 12-note deep-research collection.
- MEP-53 implementation tracking for the underlying Rust transpiler that MEP-73 extends.
- MEP-57 implementation tracking for the polyglot package system MEP-73 builds on.