Skip to content

Name the mixnet proxy component for the mixnet - #1293

Open
zancas wants to merge 3 commits into
devfrom
mixnet_proxy_rename
Open

Name the mixnet proxy component for the mixnet#1293
zancas wants to merge 3 commits into
devfrom
mixnet_proxy_rename

Conversation

@zancas

@zancas zancas commented Aug 21, 2026

Copy link
Copy Markdown
Member

This carries out ADR 0005 and nothing else. There is no behaviour change.

The crate becomes mixnet-proxy. The component namespace becomes mixnet_proxy, so Kotlin imports uniffi.mixnet_proxy. The word "shim" leaves this repository's vocabulary, in prose, in file names, and in identifiers.

ADR 0005 itself was never committed. It lands here as the first commit, because it is the decision this branch implements.

What renames itself

The namespace, the built library, and the exported symbols all follow the Cargo package name through uniffi::setup_scaffolding!. Renaming the package moves all three by itself. No source file names a symbol prefix.

What needed hands

Copies of the library file name, in six staging paths. The two workbench binaries, whose file names are their binary names. The Gradle source and golden directories. The Xcode project. The gitignore entries. The CI workflows.

Three names ADR 0005 left open

The iOS xcframework becomes MixnetProxy.xcframework. The dependency alias uniffi_shim becomes uniffi_proxy. The flag --shim-library becomes --proxy-library, and both sides of that contract move together, because the script exits on an unknown flag.

One deletion rather than a rename

The lint suppression for android/app/src/main/java/uniffi/ is deleted. PR #1291 stopped producing that path, so the entry suppressed nothing. Renaming it would have preserved a fiction.

ADRs

ADR 0004 is renamed, because its own file name carried the retired word. Its prose follows. Its decision is untouched. ADR 0005 gains a status amendment: the rename landed, and its Consequences overstated the work, because PR #1291 had already stopped checking the bindings into git.

Verification

Run on Linux:

  • cargo check, clippy, fmt --check, and 14 nextest tests pass in the renamed crate.
  • The parent workspace checks with its new exclude.
  • yarn rust:android-local x86_64 stages libmixnet_proxy.so and generates uniffi/mixnet_proxy/mixnet_proxy.kt. No file named nym_proxy_ffi survives on disk.
  • The Kotlin golden wire contract suite runs its three tests as uniffi.mixnet_proxy.contract.GoldenWireContractTest. Gradle does not fail on a missing source directory, so this was checked by test count, not exit code.
  • assembleBetaDebug succeeds.
  • On an x86_64 API 34 emulator, Mixnet Mode bound its SOCKS5 listener at 127.0.0.1:45105, and logcat carried the renamed module path. This is the only check that catches a missed library name, which otherwise installs cleanly and never works.

iOS rests on its CI lanes. yarn rust:ios needs macOS.

One thing for the maintainer

nym-proxy-ffi-check and nym-proxy-ffi-live are branch-protection required checks, and they are now mixnet-proxy-check and mixnet-proxy-live. This pull request's required checks read as missing until the repository settings name the new jobs.

Out of scope

The wallet component keeps the name zingo. NymTransportModule keeps its name. ADR 0005 rules both as separate decisions.
🤖 Generated with Claude Code

zancas and others added 2 commits August 21, 2026 11:55
ADR 0005 was ratified on 2026-08-19 but never committed. It is the decision
this branch implements, so it lands here as the first commit.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
ADR 0005 ruled that the crate is `mixnet-proxy`, that the component namespace
is `mixnet_proxy`, and that the word "shim" leaves this repository's vocabulary.
This carries that out and nothing else. No behaviour changes.

The namespace, the built library, and the exported symbols all follow the Cargo
package name through `uniffi::setup_scaffolding!`, so renaming the package moves
`uniffi.zingo_nym_proxy_ffi` to `uniffi.mixnet_proxy`, `libzingo_nym_proxy_ffi.so`
to `libmixnet_proxy.so`, and `ffi_zingo_nym_proxy_ffi_*` to `ffi_mixnet_proxy_*`
by itself. What needed hand-editing were the copies: six staging paths that write
the library file name, the two workbench binaries whose file names are their
binary names, the Gradle source and golden directories, the Xcode project, the
gitignore entries, and the CI workflows.

Three names the ADR left open are settled here. The iOS xcframework becomes
`MixnetProxy.xcframework`. The dependency alias `uniffi_shim` becomes
`uniffi_proxy`. The `--shim-library` flag becomes `--proxy-library`, and both
sides of that contract move together because the script exits on an unknown flag.

The lint suppression for the old binding path is deleted rather than renamed. It
pointed at `android/app/src/main/java/uniffi/`, which PR #1291 stopped producing,
so it suppressed nothing and renaming it would have preserved a fiction.

ADR 0004 is renamed, since its own file name carried the retired word, and its
prose follows without touching its decision. ADR 0005 gains a status amendment
recording that the rename landed, and correcting its claim that checked-in
bindings would move: PR #1291 had already removed them.

The wallet component keeps the name `zingo`, and `NymTransportModule` keeps its
name. ADR 0005 rules both as separate decisions.

Verified on Linux: cargo check, clippy, fmt, and 14 nextest tests in the renamed
crate; the parent workspace still checks with its new exclude; the x86_64 build
stages `libmixnet_proxy.so` and generates `uniffi/mixnet_proxy/mixnet_proxy.kt`;
the Kotlin golden wire contract suite runs its three tests under the new
namespace rather than silently vanishing; and `assembleBetaDebug` succeeds. iOS
rests on its CI lanes.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Three job and step names kept the retired word, and one gained a duplicated
one. ripgrep skips hidden directories by default, so the verification sweep
for the rename never looked inside .github.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

@dorianvp dorianvp left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

utACK! Waiting for checks...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants