Skip to content

docs: correct contract upgrade claims to state deployed contracts - #1160

Merged
Miracle656 merged 1 commit into
Miracle656:mainfrom
Anorakthegr8:docs/1147-correct-contract-upgrade-claims
Oct 22, 2026
Merged

Miracle656 merged 1 commit into
Miracle656:mainfrom
Anorakthegr8:docs/1147-correct-contract-upgrade-claims

Conversation

@Anorakthegr8

Copy link
Copy Markdown
Contributor

Summary

Corrects public contract upgrade documentation across the docs site to align with actual on-chain contract code and docs/CONTRACTS_V2.md:

  • Replaces fabricated upgrade paths (update_current_contract_wasm and set_wasm_hash) in frontend/docs/pages/contract-upgrades.mdx with accurate descriptions of contract immutability.
  • Accurately documents the Factory contract's three real entrypoints (__constructor, init, and deploy), clarifying that storage::set_wasm_hash is an internal helper.
  • States plainly in user-facing language that existing deployed wallets run their bytecode permanently, fixes require deploying a new factory at a new address, and users must migrate balances to new wallet addresses.
  • Aligns architecture.mdx, security.mdx, and contract-api.mdx with the immutability model.
  • Marks the documentation correction task as complete in docs/CONTRACTS_V2.md.

Related issue

Closes #1147

Type of change

  • Bug fix
  • New feature
  • Refactor
  • Docs
  • Tests
  • CI / tooling

Component

  • Wallet frontend
  • SDK
  • Contracts
  • Agent

Checklist

  • I have read CONTRIBUTING.md
  • cargo test passes (contracts)
  • npm run typecheck passes (wallet / sdk / agent)
  • npm run build passes (wallet / agent)
  • I added or updated tests where relevant
  • I updated docs / README where relevant

Screenshots / test output

  • Ran node scripts/generate-sitemap.mjs successfully (23 pages indexed).
  • Ran npm run verify:lockfile clean.
  • Verified no occurrences of fictitious upgrade calls (--fn upgrade, --fn set_wasm_hash) remain in the codebase.

@drips-wave

drips-wave Bot commented Oct 20, 2026

Copy link
Copy Markdown

@Anorakthegr8 Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@vercel

vercel Bot commented Oct 20, 2026

Copy link
Copy Markdown

@Anorakthegr8 is attempting to deploy a commit to the miracle656's projects Team on Vercel.

A member of the Team first needs to authorize it.

@Miracle656
Miracle656 merged commit 64dd560 into Miracle656:main Oct 22, 2026
13 of 16 checks passed
Miracle656 added a commit that referenced this pull request Oct 22, 2026
  jest (frontend/wallet)   78 suites, 1182 passing
  tsc (frontend/mobile)    2 errors, both pre-existing on main -- the /verify
                           dead route (#1200, still open) and the SDK react
                           peer dep from a local install

  #1220  link the npm package back to its source and docs     (#1214)
  #1197  distinguish passkey cancellation from refusal        (#1183)
  #1193  wallet contracts threat model                        (#1188)
  #1191  recovery breadcrumbs verified by name and shape      (#1177)
  #1194  detect duplicate SPP pool deployments
  #1160  correct the contract upgrade claims in the docs      (#1147)

#1197 is the one worth calling out. A user cancelling a passkey prompt is not
an error, and treating it as one is how an app teaches people it is broken.
passkeyOutcome.ts now separates cancelled, refused-by-authenticator and
genuinely failed, with tests for each -- and the swap and vault pages use it,
so it is wired rather than available.

#1160 closes the loop on #1147: the public docs claimed two contract upgrade
paths that did not exist. They now say what is true -- deployed contracts are
permanent -- which matters more than usual given we have just added
set_wasm_hash to the factory (#1189). A new factory is still a new address.

#1191 adds scripts/verify-breadcrumbs.mjs, so the data entries recovery
depends on are asserted by name and shape rather than assumed. That is the
check that only pays off on the day someone has lost their device.

Claude-Session: https://claude.ai/code/session_01USgemLt4Rnz4SGB1Srf3GB
Miracle656 pushed a commit that referenced this pull request Oct 22, 2026
… two test modules

The 'Merge PR #1220 #1197 #1193 #1191 #1194 #1160' conflict resolution
left mod operator_refusal_tests and mod spend_limit_tests ungated in
lib.rs, so every non-test build — cargo build, the reproducible build,
Release — fails on soroban_sdk::testutils imports that only exist
under cfg(test). Contract CI stayed green because cargo test compiles
with the test cfg, which is why this slipped through.

cargo build --all compiles again; invisible-wallet suite 144/144.
expected-hashes.json follows in a second commit from this PR's own
reproducible-build log, since main cannot currently produce a release
wasm to hash at all.
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.

The public docs describe two contract upgrade paths. Neither exists.

2 participants