Skip to content

Slipstream sdk private - #2

Draft
Chlup wants to merge 23 commits into
slipstream-sdkfrom
slipstream-sdk-private
Draft

Slipstream sdk private#2
Chlup wants to merge 23 commits into
slipstream-sdkfrom
slipstream-sdk-private

Conversation

@Chlup

@Chlup Chlup commented Jul 8, 2026

Copy link
Copy Markdown
Collaborator

This code review checklist is intended to serve as a starting point for the author and reviewer, although it may not be appropriate for all types of changes (e.g. fixing a spelling typo in documentation). For more in-depth discussion of how we think about code review, please see Code Review Guidelines.

Author

  • Self-review: Did you review your own code in GitHub's web interface? Code often looks different when reviewing the diff in a browser, making it easier to spot potential bugs.
  • Automated tests: Did you add appropriate automated tests for any code changes?
  • Code coverage: Did you check the code coverage report for the automated tests? While we are not looking for perfect coverage, the tool can point out potential cases that have been missed.
  • Documentation: Did you update Docs as appropiate? (E.g README.md, etc.)
  • Run the app: Did you run the app and try the changes?
  • Did you provide Screenshots of what the App looks like before and after your changes as part of the description of this PR? (only applicable to UI Changes)
  • Rebase and squash: Did you pull in the latest changes from the main branch and squash your commits before assigning a reviewer? Having your code up to date and squashed will make it easier for others to review. Use best judgement when squashing commits, as some changes (such as refactoring) might be easier to review as a separate commit.

Reviewer

  • Checklist review: Did you go through the code with the Code Review Guidelines checklist?
  • Ad hoc review: Did you perform an ad hoc review? In addition to a first pass using the code review guidelines, do a second pass using your best judgement and experience which may identify additional questions or comments. Research shows that code review is most effective when done in multiple passes, where reviewers look for different things through each pass.
  • Automated tests: Did you review the automated tests?
  • Manual tests: Did you review the manual tests?You will find manual testing guidelines under our manual testing section
  • How is Code Coverage affected by this PR? We encourage you to compare coverage befor and after your changes and when possible, leave it in a better place. Learn More...
  • Documentation: Did you review Docs, README.md, LICENSE.md, and Architecture.md as appropriate?
  • Run the app: Did you run the app and try the changes? While the CI server runs the app to look for build failures or crashes, humans running the app are more likely to notice unexpected log messages, UI inconsistencies, or bad output data.

Chlup and others added 21 commits July 7, 2026 11:00
…ase versions

prepare-release.sh and release.sh now detect a SemVer pre-release
suffix in the version (e.g. 2.6.0-alpha.1) and pass --prerelease to
gh release create/edit, so alpha/beta/rc releases no longer need to
be marked as pre-releases manually in the GitHub UI. This covers both
the local release flow and the Build FFI XCFramework workflow, which
calls prepare-release.sh.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…g release

The --force-overwrite-existing-release path only re-uploads assets via
`gh release upload --clobber`, which cannot change release properties,
so a pre-release version force-overwritten onto a release that already
existed without the pre-release bit (e.g. one created before pre-release
detection was added) stayed presented as a full release. Follow the
upload with a guarded `gh release edit --prerelease` so the existing
release gains the detected pre-release bit; stable versions skip the
edit call entirely.

Found by autonomous code review of PR zcash#1802.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Mark GitHub releases as pre-releases for SemVer pre-release versions
…endored)

The slipstream engine lives in its own repository
(https://github.com/LukasKorba/slipstream); the SDK references the tagged
v0.5.0 release via a git dependency instead of carrying the code:

- Cargo.toml: slipstream-core = { git, tag = "v0.5.0" } + [patch.crates-io]
  entries for the engine's two minimally-patched fork crates (orchard GLV
  endomorphism DH + batch seam; zcash_note_encryption BatchDomain seam —
  byte-identical, KAT-gated; the patches disappear once the seams land
  upstream).
- Swift: SlipstreamSynchronizer (actor, conforms to Synchronizer) + engine
  glue; opt-in — the existing SDKSynchronizer path is byte-for-byte intact.
- FFI: purely additive zcashlc_slipstream_* C symbols; existing symbols and
  struct layouts untouched.
- Source compatibility: WalletInitMode and the prepare(for:) overload are
  deprecated shims forwarding to the new prepare(with:walletBirthday:name:
  keySource:) (async, closure and Combine surfaces); allTransactions() is
  the one new protocol requirement (see MIGRATING.md).
- SimpleConnectionProvider: bounded SQLite busy timeout (the engine writes
  data.db under WAL while Swift reads concurrently).

Gates: cargo check green against the git tag; swift build + OfflineTests
515/0; SwiftLint clean on touched files.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The SDK changelog now carries one entry for Slipstream itself plus the
three changes that touch existing behavior (ZINIT0006 seed guard,
WalletInitMode deprecation, post-submit foundTransactions emission) —
the deleted bullets described fixes to code that is new in this PR.
docs/SLIPSTREAM_DESIGN.md and docs/SYNC_PERFORMANCE_PROPOSAL.md were
internal working documents; the engine repository's own docs
(REVIEWING.md, HOSTING.md) are the reviewer entry points.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
v0.5.0 predates a fix for a panic when restoring wallets whose birthday
lies below the 2022-23 spam era: deep-history batches flooded the sparse
checkpoint store (a v0.4 graft-accumulator interaction) and shardtree's
checkpoint prune panicked on root-only ingested shard leaves. v0.5.1
prevents the flood and self-heals already-damaged wallets at session
open; validated by a full-era 2.4M-block production restore.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… tests

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
f5200e4 (Harden cut-private-release: clean-tree trap restore +
push-remote guard) made the EXIT trap remove DOWNLOAD_DIR
unconditionally on every exit, success or failure. That left the old
inline `rm -rf "$DOWNLOAD_DIR"` right after computing the checksum
redundant -- harmless (rm -rf on an already-removed dir no-ops), but
two places responsible for the same cleanup instead of one. Drop it so
the trap is the sole source of truth, per the original fix spec's
"fold into the EXIT trap" requirement.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…lay comments

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…hed-private

Scripts touching only the public repo gain 'public' in the name
(release-public.sh, prepare-public-release.sh); the flavor mode switch
becomes private-ffi-mode.sh; docs gain a full per-script realm table.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
A fork PR that modifies .github/workflows/ gets no pull_request CI runs at
all, so the workflow keeps its original script path and the old name
forwards to prepare-public-release.sh.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@Chlup
Chlup force-pushed the slipstream-sdk-private branch from 7e30c05 to a4e1320 Compare July 8, 2026 14:21
Chlup and others added 2 commits July 8, 2026 16:29
The public STUB flavor never touches tokio directly (it remains a
transitive dependency of the tonic/Tor stack); the direct dependency
with its runtime features belongs to the slipstream engine overlay.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…-private-ffi)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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