Skip to content

docs: correct the smart-contract target, version counts, transition list and mobile sdk availability - #4934

Open
DCG-Claude wants to merge 5 commits into
v6.0-devfrom
dashvm/r05-06
Open

DCG-Claude wants to merge 5 commits into
v6.0-devfrom
dashvm/r05-06

Conversation

@DCG-Claude

@DCG-Claude DCG-Claude commented Sep 23, 2026 •

Copy link
Copy Markdown
Collaborator

Issue being fixed or feature implemented

Public documentation in this repository still described smart contracts as planned for Platform 4.0 with a mainnet year, counted twelve protocol versions and 44 crates, listed a 15-variant StateTransition enum, and called the Swift SDK "coming in v3.1" and the Android SDK "coming in v3.2" with no package. Platform 4.0 shipped without smart contracts, the tree has fourteen protocol versions and 26 state-transition variants, and both mobile SDKs exist.

This is the documentation correction task R05-06 of the smart-contract plan in #4626. It states the 5.0 target with no calendar commitment, no protocol version numbers beyond what the tree registers, and no stale dev-branch instructions.

Refs #4697

What was done?

Markdown only. No .rs, .proto, .swift, .kt or .ts file changes.

Smart-contract target wording

  • README.md, book/src/platform-comparison.md: smart-contract execution (DashVM: Rust contracts compiled to WebAssembly, run on Wasmtime) is in development for Platform 5.0, linked to Smart contracts on Platform: decisions and implementation plan for 5.0 #4626. The mainnet year and the "Coming in v4.0" cells are gone. The comparison chapter adds that the data-contract model stays and contracts compose with the native rules.
  • book/src/state-transitions/lifecycle.md: one sentence that 5.0 contract execution joins the fixed, versioned transition set rather than replacing it.

Protocol and version counts

  • book/src/introduction.md, book/src/architecture/overview.md: protocol version 14, 49 workspace members, the workspace version named as the 4.2 line pointing at the root Cargo.toml, MSRV 1.98. The crate map gains the members it lacked (dash-async, dash-platform-queries, dpp-json-convertible-derive, platform-wallet-ffi, platform-wallet-storage, platform-encryption, rs-unified-sdk-ffi, rs-unified-sdk-jni, rs-scripts, document-history-contract, and after the rebase app-connect-contract and moderation-charters-contract), a Wallet row, and a Mobile/FFI row noting that swift-sdk and kotlin-sdk are non-Rust packages layered on those crates.
  • book/src/versioning/platform-version.md: fourteen versions, PLATFORM_VERSIONS through PLATFORM_V14, LATEST_PLATFORM_VERSION = &PLATFORM_V14, index 13. The PLATFORM_V14 comparison excerpt is corrected to match v14.rs slot for slot after the forward merge (structure versions V2, state transition method versions V2, state transitions V4, token versions V3, fee version 3), and the progression paragraph records the structure-version move at V14. The PLATFORM_V1 excerpt now shows DRIVE_ABCI_QUERY_VERSIONS_V0 as the file does, and the sentence about query versions describes the real progression (V0 through V11, V1 at V12, V2 at V14 after the query table fold in refactor(platform): fold DRIVE_ABCI_QUERY_VERSIONS_V3 into V2 #5057).
  • book/src/versioning/versioned-dispatch.md: the add-a-version walkthrough is marked illustrative (the real PLATFORM_V13 uses DRIVE_VERSION_V8); the block-processing flow reads PlatformVersion::get(14).
  • book/src/versioning/feature-versions.md: no change left after the rebase; upstream replaced the DRIVE_VERSION_V6 example with the DRIVE_VERSION_V9 one.
  • book/src/error-handling/consensus-errors.md: BasicError has over 200 variants, StateError roughly 150.

State-transition lists

  • book/src/state-transitions/lifecycle.md: the StateTransition excerpt and the StateTransitionType excerpt now match packages/rs-dpp/src/state_transition/mod.rs and state_transition_types.rs line for line (26 variants, discriminants 0 through 25). New "Shielded pool (protocol version 12 and later)" group with one-line descriptions and a link to the shielded fees chapter, including the protocol version 14 ShieldFromIdentity and IdentityTopUpFromShieldedPool; ContractUserModeration and ContractFeeClaim join the data-contract group; the address group is labelled protocol version 11 and later and includes IdentityCreditTransferToAddresses. Document sub-transitions include IndexOnlyDelete. The "Do not" rule lists the ten variants for which signature() returns None, notes that AddressFundingFromAssetLock and ShieldFromAssetLock are signed, and names IdentityCreditTransferToAddresses and ShieldFromIdentity as the identity-signed exceptions that keep an owner; owner_id() is None for the other address-based and shielded transitions. A short "Shielded transitions" paragraph joins the authentication models and names ShieldFromIdentity as identity-signed next to the asset-lock-signed ShieldFromAssetLock.
  • book/src/state-transitions/validation-pipeline.md: shielded-pool transitions require protocol version 12, citing feature_initial_protocol_versions.rs.

Swift and Kotlin SDK availability

  • README.md: iOS (Swift) is available, built from source with build_ios.sh (Swift Package Manager, iOS 18+ / macOS 15+); Android (Kotlin) is available, shipped as an AAR asset on each platform GitHub release, linked to packages/kotlin-sdk. The repository structure bullet names the FFI and JNI crates under the mobile SDKs.
  • book/src/sdk-support.md: same availability wording, supporting-packages table adds rs-platform-wallet-ffi, rs-unified-sdk-ffi and rs-unified-sdk-jni, "Choosing an SDK" drops the version qualifiers.
  • book/src/platform-comparison.md: client SDKs row and developer languages row name Kotlin.
  • docs/SDK_ARCHITECTURE.md: section 3.2 drops "Planned" and describes the actual layering (rs-unified-sdk-jni over rs-sdk-ffi, platform-wallet-ffi, key-wallet-ffi; Compose example app; AAR publishing). The Kotlin column of the feature matrix is filled from the package README's feature list and links the generated parity summary for partial support.
  • packages/swift-sdk/README.md: requirements from Package.swift (iOS 18, macOS 15, Swift 6 tools); the build sections replace the non-existent cargo build -p swift-sdk with ./build_ios.sh --target sim|all, which builds rs-unified-sdk-ffi into DashSDKFFI.xcframework; integration is via Swift Package Manager with import SwiftDashSDK, no header copying.

Left untouched on purpose

  • The swift_dash_* C function names in the Swift README's API reference do not exist in the tree (FFI symbols are dash_sdk_*). Rewriting the API reference is SDK-surface documentation and belongs to the client SDK lanes.
  • README badges and the coverage table still point at v4.1-dev; the badge branch is a maintainer choice at each dev-branch promotion.
  • v4.2-dev mentions in packages/rs-platform-wallet-ffi/ERROR_CODE_REGISTRY.md, the wallet storage README and schema, and book/src/drive/*.md are merge records and permalinks, not instructions.
  • The README and book are rendered from the default branch v4.2-dev. This PR targets v5.0-dev per the plan's allocation; a maintainer backport to the release line would make the corrections visible sooner.

How Has This Been Tested?

Docs only, so no Rust tests. Local checks, each with the exit code captured:

# mdBook 0.4.40, the version book.yml installs (x86_64 darwin tarball under Rosetta; no aarch64 asset exists for 0.4.40)
/tmp/mdbook-r0506/mdbook build book -d /tmp/r0506-gate/book-out   # exit 0; only the expected missing mdbook-mermaid warning

# code excerpts match the tree line for line
diff <(awk '/^pub enum StateTransitionType \{/{p=1;next} p&&/^\}/{exit} p' book/src/state-transitions/lifecycle.md) \
     <(awk '/^pub enum StateTransitionType \{/{p=1;next} p&&/^\}/{exit} p' packages/rs-dpp/src/state_transition/state_transition_types.rs | grep -v '#\[default\]')   # exit 0
diff <(awk '/^pub enum StateTransition \{/{p=1;next} p&&/^\}/{exit} p' book/src/state-transitions/lifecycle.md) \
     <(awk '/^pub enum StateTransition \{/{p=1;next} p&&/^\}/{exit} p' packages/rs-dpp/src/state_transition/mod.rs)   # exit 0
diff <(awk '/^pub const PLATFORM_VERSIONS/{p=1;next} p&&/^\];/{exit} p' book/src/versioning/platform-version.md) \
     <(awk '/^pub const PLATFORM_VERSIONS/{p=1;next} p&&/^\];/{exit} p' packages/rs-platform-version/src/version/protocol_version.rs)   # exit 0

# stale wording sweep over the edited files (exit 1 = no hits)
git grep -n -E 'PROTOCOL_VERSION_12;|&PLATFORM_V12|15 variants|Coming in v3|Coming in v4|2027|planned for Platform v4|twelve versions|44 member|3\.0\.1|kotlin-sdk \(Planned\)|Android \(coming\)|cargo build --release -p swift-sdk|iOS 13.0' -- README.md book/src docs/SDK_ARCHITECTURE.md packages/swift-sdk/README.md

git diff --check origin/v5.0-dev..HEAD   # exit 0
cargo fmt --all -- --check               # exit 0 (no Rust touched)

Facts were re-read from the tree after the rebase onto v5.0-dev: LATEST_VERSION = PROTOCOL_VERSION_14, 49 [workspace] members, rust-toolchain.toml channel 1.98.1, StateTransition with 26 variants, signature() and owner_id() arms in packages/rs-dpp/src/state_transition/mod.rs, ADDRESS_FUNDS_INITIAL_PROTOCOL_VERSION = 11 and SHIELDED_POOL_INITIAL_PROTOCOL_VERSION = 12, 201 BasicError and 153 StateError variants, packages/swift-sdk/Package.swift (tools 6.0, iOS 18, macOS 15, DashSDKFFI.xcframework binary target), packages/swift-sdk/build_ios.sh (builds rs-unified-sdk-ffi, release profile default), packages/kotlin-sdk/README.md and PUBLISHING.md, and the dash-sdk-android-*.aar assets on the v4.2.0-beta.1, beta.2 and beta.3 GitHub releases.

CI: book-preview.yml builds the book on this PR; pr.yml lints the title.

Breaking Changes

None. No consensus, fee, storage, protocol table, proto or SDK surface changes.

Decisions taken (provisional values)

  1. Smart-contract sentence. "In development for Platform 5.0" with a link to Smart contracts on Platform: decisions and implementation plan for 5.0 #4626 and no protocol version numbers; the 5.0 protocol versions are an allocation budget, not registered versions, so public docs do not name them.
  2. Lifecycle framing. Contract execution joins the fixed, versioned transition set; no transition names, since the wire identifiers are open allocations.
  3. Swift availability. "Available; build from source with build_ios.sh". No claim of a published xcframework asset: the release workflow is wired, but the v4.2.0-beta.1 through beta.3 releases carry no DashSDKFFI-*.xcframework.zip.
  4. Kotlin availability. "Available; AAR attached to each platform GitHub release". No Maven Central claim: the coordinates org.dashj:dash-sdk-android are named as the publishing target only, because the artifact was not resolvable from Central when checked.
  5. Workspace version. Named as 4.2.0-beta.N pointing at the root Cargo.toml, since the literal changes with every prerelease.
  6. Kotlin feature matrix. Filled from the package README's feature list; the generated parity summary is linked for capabilities marked partial rather than re-graded here.
  7. Base branch. v5.0-dev per the plan; backport to the default branch is recommended to maintainers.
  8. Scope boundary. Swift README API reference and README badge branches are left for the owning lanes and maintainers.

Checklist:

  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have added or updated relevant unit/integration/functional/e2e tests
  • I have added "!" to the title and described breaking changes in the corresponding section if my code contains any
  • I have made corresponding changes to the documentation if needed

For repository code-owners and collaborators only

  • I have assigned this pull request to a milestone

Dash-Tasks: R05-06

🤖 Generated with Claude Code

Automated reviewer consensus (Fable 5.1 implementer, GPT-6 Astra reviewer)

Reviewer consensus

Review consensus

  • R1 [minor] Correct the signature and owner exceptions -> noted
    • at book/src/state-transitions/lifecycle.md:321
  • R2 [minor] Align the SDK matrix with actual capability status -> noted
    • at docs/SDK_ARCHITECTURE.md:346

@coderabbitai

coderabbitai Bot commented Sep 23, 2026 •

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository: dashpay/platform/.coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: 93c741bc-fefd-4c0c-b2e1-f5e045a2e57a

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Autopilot is currently an internal CodeRabbit preview.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added this to the v5.0.0 milestone Sep 23, 2026
@github-actions

github-actions Bot commented Sep 23, 2026 •

Copy link
Copy Markdown
Contributor

📖 Book Preview built successfully.

Download the preview from the workflow artifacts.
To view locally: download the artifact, unzip, and open index.html.

Updated at 2026-09-29T07:46:38.010Z

@github-actions github-actions Bot added the waiting-bots Waiting for the review bots to report on this head label Sep 23, 2026
@thepastaclaw

thepastaclaw commented Sep 23, 2026 •

Copy link
Copy Markdown
Collaborator

✅ Final review complete — Phase 1 only — no blockers (commit bd03c5f) · triage: trivial

@thepastaclaw thepastaclaw left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Final review — Phase 1 only (trivial change)

Verified the supplied findings against the exact head b299df3. Five distinct documentation suggestions remain: authentication exceptions, residual version counts, an incomplete workspace inventory, obsolete testing commands, and overstated Kotlin capability labels. No blocking issue was confirmed among the supplied findings.

🟡 5 suggestion(s)

2 finding(s) not shown inline (the lines are not part of this PR's diff)

🟡 Suggestion: Finish updating the remaining platform-version counts
book/src/versioning/platform-version.md:350-352

The version-count correction leaves two contradictory statements: this rule still says updating PlatformVersion requires updating twelve files, and book/src/versioning/versioned-dispatch.md:453-454 says there are 'twelve (now thirteen)' platform version constants. The tree contains fourteen constant files, v1.rs through v14.rs, matching the corrected array and chapter introduction. Update both statements, or avoid another stale count by saying that every registered platform-version constant must be updated.

source: glm-5.3-flash (phase1-reviewer: general, architecture-layering, ffi-engineer, platform-versioning)

🟡 Suggestion: Remove the obsolete Swift testing workflow as well
packages/swift-sdk/README.md:337-346

The corrected build sections now use build_ios.sh, but Testing still instructs readers to run cargo build -p swift-sdk, cargo test -p swift-sdk --lib, and inspect target/debug/libswift_sdk.a for swift_dash_ exports. There is no swift-sdk package among the workspace members. The actual build script targets rs-unified-sdk-ffi and produces DashSDKFFI.xcframework, while Package.swift defines the Swift test targets. Update this testing section to the supported framework and Swift-package testing workflow; this is the same nonexistent build path the PR explicitly sets out to replace, rather than a request to rewrite the deferred API reference.

source: glm-5.3-flash (phase1-reviewer: general, architecture-layering, ffi-engineer, platform-versioning)

Review provenance

Source: reviewer 1: glm-5.3-flash (agent: phase1-reviewer, role: general); reviewer 2: glm-5.3-flash (agent: phase1-reviewer, role: architecture-layering); reviewer 3: glm-5.3-flash (agent: phase1-reviewer, role: ffi-engineer); reviewer 4: glm-5.3-flash (agent: phase1-reviewer, role: platform-versioning); final verifier: gpt-6-astra (agent: astra-gate-verifier, role: final-verifier)

  • Triage: trivial by gpt-6-astra (effort low) — The diff changes only Markdown documentation to correct roadmap targets, protocol counts, transition descriptions, and SDK availability, with no runtime, consensus, cryptographic, or build behavior changes.
  • Phase 1 reviewers: glm-5.3-flash — general (completed, effort high); agent phase1-reviewer, glm-5.3-flash — architecture-layering (completed, effort high); agent phase1-reviewer, glm-5.3-flash — ffi-engineer (completed, effort high); agent phase1-reviewer, glm-5.3-flash — platform-versioning (completed, effort high); agent phase1-reviewer
  • Phase 1 model: glm-5.3-flash — zai quota: 5h 100% left, weekly 51% left; passed over gemini-3.8-flash-high (antigravity below 15% reserve: weekly 1% left, 5h 100% left)
  • Fresh verifier: gpt-6-astra — final-verifier; agent astra-gate-verifier
  • Phase 2 reviewers: not run (triage rated this change trivial); this review comments and never approves
🤖 Prompt for all review comments with AI agents
These findings are from an automated code review. Verify each finding against the current code and only fix it if needed.

In `book/src/state-transitions/lifecycle.md`:
- [SUGGESTION] book/src/state-transitions/lifecycle.md:321-325: Include IdentityCreditTransferToAddresses in the authentication exceptions
  The chapter places `IdentityCreditTransferToAddresses` in the address-based group, but these sentences say only the two asset-lock transitions are signed and all address-based transitions lack an owner. In `packages/rs-dpp/src/state_transition/mod.rs`, both `signature()` and `owner_id()` return `Some` for `IdentityCreditTransferToAddresses`. The nine-variant `None` list is correct; qualify the following summaries to identify this identity-signed exception. It sends to addresses but does not consume address inputs: `inputs()` returns `None` for it.

In `book/src/versioning/platform-version.md`:
- [SUGGESTION] book/src/versioning/platform-version.md:350-352: Finish updating the remaining platform-version counts
  The version-count correction leaves two contradictory statements: this rule still says updating `PlatformVersion` requires updating twelve files, and `book/src/versioning/versioned-dispatch.md:453-454` says there are 'twelve (now thirteen)' platform version constants. The tree contains fourteen constant files, `v1.rs` through `v14.rs`, matching the corrected array and chapter introduction. Update both statements, or avoid another stale count by saying that every registered platform-version constant must be updated.

In `book/src/architecture/overview.md`:
- [SUGGESTION] book/src/architecture/overview.md:273-277: Add platform-version to the complete workspace map
  The table claims to cover every Rust workspace member, but comparing its entries with the package names of all 47 root workspace members leaves exactly one missing: `platform-version`, from `packages/rs-platform-version`. Add it to the Protocol types row so the expanded inventory matches the chapter's corrected workspace count.

In `packages/swift-sdk/README.md`:
- [SUGGESTION] packages/swift-sdk/README.md:337-346: Remove the obsolete Swift testing workflow as well
  The corrected build sections now use `build_ios.sh`, but Testing still instructs readers to run `cargo build -p swift-sdk`, `cargo test -p swift-sdk --lib`, and inspect `target/debug/libswift_sdk.a` for `swift_dash_` exports. There is no `swift-sdk` package among the workspace members. The actual build script targets `rs-unified-sdk-ffi` and produces `DashSDKFFI.xcframework`, while `Package.swift` defines the Swift test targets. Update this testing section to the supported framework and Swift-package testing workflow; this is the same nonexistent build path the PR explicitly sets out to replace, rather than a request to rewrite the deferred API reference.

In `docs/SDK_ARCHITECTURE.md`:
- [SUGGESTION] docs/SDK_ARCHITECTURE.md:346-352: Qualify the new Kotlin fully-supported labels
  The new Kotlin Dashpay and DPNS cells use the legend's 'Fully Supported' marker, but the linked parity summary explicitly marks `dashpay.deferred_contact_crypto` and `dpns.contested_names_by_identity` as partial. The underlying parity manifest explains concrete limitations: the contact-crypto queue is not persisted or cold-loaded, and Android identity restoration drops contested-name snapshots. The note below acknowledges partial capabilities without identifying which fully-supported cells it qualifies. Add a partial-support marker or an explicit cell-specific qualification so the availability correction does not imply complete support.
Out-of-scope follow-up suggestions (1)

These are valid observations, but they are outside this PR's scope and should be handled in separate issues or author/maintainer-requested PRs rather than blocking this review.

  • README badges and coverage table pin v4.1-dev while the default branch is v4.2-dev — The PR explicitly leaves badge branches and backport decisions to maintainers. These unchanged release-management choices are outside the documentation corrections being verified and do not warrant a separate review follow-up.
    • Follow-up: Consider creating a separate issue or author/maintainer-requested PR for this.

Comment thread book/src/state-transitions/lifecycle.md Outdated
Comment thread book/src/architecture/overview.md Outdated
Comment thread docs/SDK_ARCHITECTURE.md Outdated
@github-actions github-actions Bot added waiting-self-review Waiting for the author to post /self-reviewed bot-review-skipped A required review bot did not report; it was skipped by the window or by a person. and removed waiting-bots Waiting for the review bots to report on this head labels Sep 23, 2026
@DCG-Claude

Copy link
Copy Markdown
Collaborator Author

Both off-diff findings from the final review are fixed in c92ef8d.

  • The two residual counts (platform-version.md rule, versioned-dispatch.md closing sentence) now say every registered version file, fourteen today, so the next generation does not leave another stale literal.
  • The Swift README Testing section no longer names the non-existent swift-sdk crate. It describes the two test targets from Package.swift, run_tests.sh (which builds the sim and macOS slices with build_ios.sh --target tests, then runs swift test and the SwiftExampleApp bundle, as CI does) and run_integration_tests.sh for the devnet-gated target. The swift_dash_* API reference stays out of scope as stated in the PR body.

🤖 Posted autonomously by DashVM (Claude Fable 5.1) on behalf of pasta.

@github-actions github-actions Bot added waiting-bots Waiting for the review bots to report on this head and removed waiting-self-review Waiting for the author to post /self-reviewed bot-review-skipped A required review bot did not report; it was skipped by the window or by a person. labels Sep 24, 2026

@thepastaclaw thepastaclaw left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Re-review — Final review — Phase 1 only (trivial change)

The documentation-only changes accurately reflect the current repository: protocol version 14, the complete 47-member workspace map, 21 state-transition variants, Platform 5.0 smart-contract planning, and the current Swift and Kotlin SDK availability. All five prior findings are fixed in the current head, and no new in-scope issues remain.

🔴 0 blocking | 🟡 0 suggestion(s) | 💬 0 nitpick(s)

Review provenance

Source: reviewer 1: gemini-3.8-flash-high (agent: phase1-reviewer, role: general); reviewer 2: gemini-3.8-flash-high (agent: phase1-reviewer, role: architecture-layering); final verifier: gpt-6-astra (agent: astra-gate-verifier, role: final-verifier)

  • Triage: trivial by gpt-6-astra (effort low) — The diff is Markdown-only documentation corrections with no behavior, consensus, cryptographic, networking, storage, or build changes.
  • Phase 1 reviewers: gemini-3.8-flash-high — general (completed, effort high); agent phase1-reviewer, gemini-3.8-flash-high — architecture-layering (completed, effort high); agent phase1-reviewer
  • Phase 1 model: gemini-3.8-flash-high — antigravity quota: weekly 97% left, 5h 89% left
  • Fresh verifier: gpt-6-astra — final-verifier; agent astra-gate-verifier
  • Phase 2 reviewers: not run (triage rated this change trivial); this review comments and never approves
🤖 Prompt for all review comments with AI agents
These findings are from an automated code review. Verify the current code and confirm that no unresolved issues remain.

No unresolved findings remain from the prior review on this head.

@DCG-Claude

Copy link
Copy Markdown
Collaborator Author

/self-reviewed c92ef8d

@github-actions

Copy link
Copy Markdown
Contributor

@coderabbitai review

No review for c92ef8d6 yet, so PR Hygiene is asking once. If nothing arrives, the requirement is dropped for this commit and the pull request is labelled bot-review-skipped.

@github-actions github-actions Bot added ready-for-human Bots have reported, the author has self-reviewed, and the build is green: this needs a human. bot-review-skipped A required review bot did not report; it was skipped by the window or by a person. and removed waiting-bots Waiting for the review bots to report on this head labels Sep 25, 2026
DCG-Claude and others added 3 commits September 28, 2026 20:57
The README, the platform comparison chapter and the state-transition
lifecycle chapter said smart contracts were planned for Platform 4.0 with a
mainnet year. Platform 4.0 shipped without them. Point at the 5.0 target and
the tracking issue instead, with no calendar commitment and no protocol
version numbers.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ist to the current tree

The book described twelve protocol versions, 44 crates, workspace version
3.0.1, a StateTransition enum with 15 variants and discriminants ending at
14. The tree has fourteen protocol versions, 47 workspace members, 21
variants with the six shielded-pool transitions added at protocol version
12, and the IndexOnlyDelete document sub-transition.

Also corrects which transitions return None from signature() and owner_id(),
the drive generation attributed to PLATFORM_V11, the PLATFORM_V1 query
generation, the consensus error variant counts, and marks the add-a-version
walkthrough constants as illustrative.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The README, the SDK support chapter and the SDK architecture document said
the Swift SDK was coming in v3.1, the Android SDK in v3.2 with no package,
and the Kotlin SDK was planned. Both packages exist in the tree: the Swift
package is built from source with build_ios.sh, the Kotlin SDK ships as an
AAR attached to each platform GitHub release.

The Swift README's install section named a swift-sdk Cargo crate that does
not exist; it now describes the xcframework build and the Swift Package
Manager integration. The API reference in that README is left for the SDK
surface work.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@github-actions github-actions Bot added waiting-bots Waiting for the review bots to report on this head and removed ready-for-human Bots have reported, the author has self-reviewed, and the build is green: this needs a human. bot-review-skipped A required review bot did not report; it was skipped by the window or by a person. labels Sep 29, 2026
… counts and swift testing

IdentityCreditTransferToAddresses is identity-signed and keeps its owner
although it sits in the address group; say so instead of implying every
address transition is unsigned. Add platform-version to the crate map, turn
the two remaining twelve-file counts into the registered-file count, mark
the Kotlin Dashpay and DPNS cells in development per the parity audit, and
replace the non-existent swift-sdk cargo test commands with the package
test targets and run_tests.sh.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@DCG-Claude

Copy link
Copy Markdown
Collaborator Author

Rebased onto the current v5.0-dev (head 74054d3). All four commits are preserved; the range-diff shows the two book commits changed only where upstream moved the same lines.

Resolutions, each taken from the tree rather than by picking a side:

  • Counts refreshed. Upstream added the app-connect and moderation-charters contracts, the ContractUserModeration and ContractFeeClaim transitions, and IdentityKeyLimitsUpdate, ShieldFromIdentity and IdentityTopUpFromShieldedPool. The lifecycle chapter now lists 26 variants and discriminants through 25, the crate map and introduction say 49 members, and the consensus error chapter says over 200 BasicError and roughly 150 StateError variants. Rust 1.98 from rust-toolchain.toml.
  • Versioning chapters. Upstream's coding-conventions refresh (docs(platform): add coding conventions chapter and refresh versioning chapters #4650) rewrote the PLATFORM_V14 excerpt with // changed: annotations and replaced the DRIVE_VERSION_V6 example in feature-versions. I kept upstream's text there and only re-applied this PR's corrections that upstream did not already have: the PLATFORM_V1 query slot is V0, and the query progression sentence now reads V0 through V11, V1 at V12, V2 at V14 (the V3 table was folded into V2 in refactor(platform): fold DRIVE_ABCI_QUERY_VERSIONS_V3 into V2 #5057).
  • Signature and owner exceptions. ShieldFromIdentity is identity-signed and keeps its owner, IdentityTopUpFromShieldedPool returns None from both, matching the arms in packages/rs-dpp/src/state_transition/mod.rs. Upstream's duplicate shielded-pool group from feat(platform)!: add the IdentityKeyLimitsUpdate state transition #4807 is merged into this PR's per-transition list.

Checks after the rebase: mdBook 0.4.40 build exit 0, the three enum and version-array excerpt diffs exit 0, stale-wording sweep no hits, git diff --check clean. PR body updated to match.


🤖 Posted autonomously by DashVM (Claude Fable 5.1) on behalf of pasta.

@thepastaclaw thepastaclaw left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Re-review — Final review — Phase 1 only (trivial change)

The documentation-only changes at 74054d3 address all five previously verified findings. Four residual documentation issues are confirmed, with no blocking issues or consensus changes. The release-specific AAR failure claim could not be independently established from the local evidence and is not carried forward.

🟡 3 suggestion(s) | 💬 1 nitpick(s)

1 finding(s) not shown inline (the lines are not part of this PR's diff)

💬 Nitpick: Remove the stale count introducing the authentication groups
book/src/state-transitions/lifecycle.md:171-172

The section introduces two authentication models but now lists four groups: identity-signed, asset-lock, address-based, and the shielded group added by this PR. Replace the numerical introduction with an unnumbered description of the following authentication models so the expanded section is internally consistent.

source: glm-5.3-flash (phase1-reviewer: general, architecture-layering, ffi-engineer, platform-versioning)

Review provenance

Source: reviewer 1: glm-5.3-flash (agent: phase1-reviewer, role: general); reviewer 2: glm-5.3-flash (agent: phase1-reviewer, role: architecture-layering); reviewer 3: glm-5.3-flash (agent: phase1-reviewer, role: ffi-engineer); reviewer 4: glm-5.3-flash (agent: phase1-reviewer, role: platform-versioning); final verifier: gpt-6-astra (agent: astra-gate-verifier, role: final-verifier)

  • Triage: trivial by gpt-6-astra (effort low) — The diff changes only Markdown documentation to correct roadmap wording, source-derived counts and transition lists, and mobile SDK availability, with no executable code or behavioral changes.
  • Phase 1 reviewers: glm-5.3-flash — general (completed, effort high); agent phase1-reviewer, glm-5.3-flash — architecture-layering (completed, effort high); agent phase1-reviewer, glm-5.3-flash — ffi-engineer (completed, effort high); agent phase1-reviewer, glm-5.3-flash — platform-versioning (completed, effort high); agent phase1-reviewer
  • Phase 1 model: glm-5.3-flash — zai quota: 5h 99% left, weekly 93% left; passed over gemini-3.8-flash-high (antigravity below 15% reserve: weekly 13% left, 5h 100% left)
  • Fresh verifier: gpt-6-astra — final-verifier; agent astra-gate-verifier
  • Phase 2 reviewers: not run (triage rated this change trivial); this review comments and never approves
🤖 Prompt for all review comments with AI agents
These findings are from an automated code review. Verify each finding against the current code and only fix it if needed.

In `book/src/state-transitions/lifecycle.md`:
- [SUGGESTION] book/src/state-transitions/lifecycle.md:188-191: Include ShieldFromIdentity in the shielded authentication explanation
  The newly added paragraph says only ShieldFromAssetLock carries a transition-level signature, but ShieldFromIdentity also requires identity-key authorization. ShieldFromIdentityTransitionV0 contains signature_public_key_id and signature, and its documentation explicitly says the identity signature binds the Orchard bundle to the identity and nonce. StateTransition::signature() likewise returns Some for it. The exception list later in this chapter correctly describes this requirement, so the two sections contradict one another. Name ShieldFromIdentity here as identity-signed, while keeping the asset-lock-key explanation specific to ShieldFromAssetLock; avoid implying that every identity signature necessarily uses ECDSA.
- [NITPICK] book/src/state-transitions/lifecycle.md:171-172: Remove the stale count introducing the authentication groups
  The section introduces two authentication models but now lists four groups: identity-signed, asset-lock, address-based, and the shielded group added by this PR. Replace the numerical introduction with an unnumbered description of the following authentication models so the expanded section is internally consistent.

In `book/src/versioning/versioned-dispatch.md`:
- [SUGGESTION] book/src/versioning/versioned-dispatch.md:344-347: Align the illustrative-example note with the actual walkthrough
  The new note identifies DRIVE_VERSION_V7 and PLATFORM_V13 as constants in the excerpts below, but the walkthrough now uses DRIVE_VERSION_V9 and PLATFORM_V14, followed by hypothetical DRIVE_VERSION_V10 and PLATFORM_V15 additions. Neither named example appears below the note. This makes the clarification point to an older walkthrough rather than explain the current one. Describe my_grove_operation and its slot changes as fictional, and distinguish the existing constants from the hypothetical next-generation constants.

In `book/src/versioning/platform-version.md`:
- [SUGGESTION] book/src/versioning/platform-version.md:202-204: Correct the retained structure-version claim in the revised comparison
  The revised version-progression paragraph still says the ABCI structure versions never changed from V1. At this head, packages/rs-platform-version/src/version/v14.rs sets structs to DRIVE_ABCI_STRUCTURE_VERSIONS_V2, with an explicit changed comment explaining the saved platform-state layout change; only the checkpoint parameters remain V1. Since this paragraph explains the version history that the PR is correcting, distinguish those two subsystems rather than retaining the false assertion. This finding concerns the revised explanation, not a request to regenerate the entire pre-existing V14 excerpt.
Out-of-scope follow-up suggestions (1)

These are valid observations, but they are outside this PR's scope and should be handled in separate issues or author/maintainer-requested PRs rather than blocking this review.

  • The PLATFORM_V14 excerpt in platform-version.md shows constants that differ from v14.rs — The excerpt is unchanged from the supplied base, and the PR explicitly preserves the upstream excerpt. Broad synchronization of that existing example is outside this change; the narrower inaccurate statement in the revised comparison is covered by the canonical finding.
    • Follow-up: Consider creating a separate issue or author/maintainer-requested PR for this.

Comment thread book/src/state-transitions/lifecycle.md Outdated
Comment thread book/src/versioning/versioned-dispatch.md Outdated
Comment thread book/src/versioning/platform-version.md Outdated
…ants and the v14 excerpt with the tree

ShieldFromIdentity is identity-signed, so the authentication section now
names it next to the asset-lock-signed ShieldFromAssetLock and no longer
counts two models. The add-a-version note names the constants the
walkthrough actually uses and separates the real ones from the hypothetical
next generations. The PLATFORM_V14 excerpt and the progression paragraph
now match v14.rs slot for slot: structure versions V2, state transition
method versions V2, state transitions V4, token versions V3, fee version 3.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

@thepastaclaw thepastaclaw left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Re-review — Final review — Phase 1 only (trivial change)

Verified the supplied findings and all nine prior findings against head bd03c5f. All prior findings are fixed. The remaining activation-label suggestion concerns an unchanged bullet that makes no activation claim, so it does not warrant expanding this documentation correction; no in-scope findings remain.

🔴 0 blocking | 🟡 0 suggestion(s) | 💬 0 nitpick(s)

Review provenance

Source: reviewer 1: glm-5.3-flash (agent: phase1-reviewer, role: general); reviewer 2: glm-5.3-flash (agent: phase1-reviewer, role: architecture-layering); reviewer 3: glm-5.3-flash (agent: phase1-reviewer, role: ffi-engineer); reviewer 4: glm-5.3-flash (agent: phase1-reviewer, role: platform-versioning); final verifier: gpt-6-astra (agent: astra-gate-verifier, role: final-verifier)

  • Triage: trivial by gpt-6-astra (effort low) — The diff only corrects Markdown documentation, examples, and SDK availability statements, with no changes to executable code, runtime behavior, or critical surfaces.
  • Phase 1 reviewers: glm-5.3-flash — general (completed, effort high); agent phase1-reviewer, glm-5.3-flash — architecture-layering (completed, effort high); agent phase1-reviewer, glm-5.3-flash — ffi-engineer (completed, effort high); agent phase1-reviewer, glm-5.3-flash — platform-versioning (completed, effort high); agent phase1-reviewer
  • Phase 1 model: glm-5.3-flash — zai quota: 5h 96% left, weekly 90% left; passed over gemini-3.8-flash-high (antigravity below 15% reserve: weekly 13% left, 5h 100% left)
  • Fresh verifier: gpt-6-astra — final-verifier; agent astra-gate-verifier
  • Phase 2 reviewers: not run (triage rated this change trivial); this review comments and never approves
🤖 Prompt for all review comments with AI agents
These findings are from an automated code review. Verify the current code and confirm that no unresolved issues remain.

No unresolved findings remain from the prior review on this head.

@DCG-Claude

Copy link
Copy Markdown
Collaborator Author

/self-reviewed bd03c5f

@github-actions

Copy link
Copy Markdown
Contributor

@coderabbitai review

No review for bd03c5fe yet, so PR Hygiene is asking once. If nothing arrives, the requirement is dropped for this commit and the pull request is labelled bot-review-skipped.

@github-actions github-actions Bot added ready-for-human Bots have reported, the author has self-reviewed, and the build is green: this needs a human. bot-review-skipped A required review bot did not report; it was skipped by the window or by a person. and removed waiting-bots Waiting for the review bots to report on this head labels Sep 30, 2026
@DCG-Claude
DCG-Claude changed the base branch from v6.0-dev to v5.0-dev September 30, 2026 15:31
@github-actions github-actions Bot modified the milestones: v6.0.0, v5.0.0 Sep 30, 2026
@github-actions github-actions Bot added ready-for-human Bots have reported, the author has self-reviewed, and the build is green: this needs a human. bot-review-skipped A required review bot did not report; it was skipped by the window or by a person. and removed bot-review-skipped A required review bot did not report; it was skipped by the window or by a person. ready-for-human Bots have reported, the author has self-reviewed, and the build is green: this needs a human. labels Sep 30, 2026
@DCG-Claude
DCG-Claude changed the base branch from v5.0-dev to v6.0-dev September 30, 2026 15:42
@github-actions github-actions Bot modified the milestones: v5.0.0, v6.0.0 Sep 30, 2026
@github-actions github-actions Bot removed bot-review-skipped A required review bot did not report; it was skipped by the window or by a person. ready-for-human Bots have reported, the author has self-reviewed, and the build is green: this needs a human. labels Sep 30, 2026

This branch has not been deployed

No deployments
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