Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
382 commits
Select commit Hold shift + click to select a range
96fb252
feat(dpp): immutable properties on mutable document types (#4815)
QuantumExplorer Sep 18, 2026
d141164
feat(wasm-dpp2): expose immutable document properties to JavaScript (…
QuantumExplorer Sep 18, 2026
1a57e10
feat(dpp)!: propertyAgreement on $ownerId and $creatorId: referenced …
QuantumExplorer Sep 18, 2026
71ea82f
feat(sdk): show and lock immutable document properties in the mobile …
QuantumExplorer Sep 18, 2026
d09c15d
chore(release): update changelog and bump version to 4.2.0-beta.2 (#4…
QuantumExplorer Sep 18, 2026
5568dfa
fix(sdk): persist the contract bounds kind on Android and iOS (#4800)
QuantumExplorer Sep 18, 2026
9653f14
fix(sdk): parse the $type map for the perpetual distribution recipien…
QuantumExplorer Sep 18, 2026
51183be
fix(sdk): parse change-control action takers from the rs-dpp $type ma…
QuantumExplorer Sep 18, 2026
cf86db8
feat(platform)!: once-per-identity token distribution (#4827)
QuantumExplorer Sep 19, 2026
8a8cc13
test(drive-abci): pin that a token config update cannot set a perpetu…
QuantumExplorer Sep 19, 2026
a1db364
feat(platform)!: let the contract owner pay the gas of token-paid doc…
QuantumExplorer Sep 19, 2026
2296067
feat(sdk): once-per-identity token distribution in the mobile example…
QuantumExplorer Sep 19, 2026
3b06b15
fix(drive)!: create distribution trees for tokens added by contract u…
QuantumExplorer Sep 19, 2026
cb9a797
feat(platform)!: optional document token costs paid in credits when t…
QuantumExplorer Sep 19, 2026
c92a176
feat(sdk): carry consensus error codes through the wallet FFI (#4838)
QuantumExplorer Sep 19, 2026
fa48a8d
fix(drive)!: bound pre-programmed distribution amounts and queue a sh…
QuantumExplorer Sep 19, 2026
7e43d43
fix(drive)!: mint base supply of tokens added by contract update (#4835)
QuantumExplorer Sep 19, 2026
6def218
ci: PR Hygiene is the merge gate; CODEOWNERS carries no rules (#4839)
shumkov Sep 19, 2026
38bbd30
feat(drive): describe the GroveDB structure as code (#4845)
QuantumExplorer Sep 20, 2026
bd79344
ci: link the GroveDB structure viewer on pull requests that change st…
QuantumExplorer Sep 20, 2026
d7401e6
test(drive-abci): check every strategy test's state against the Grove…
QuantumExplorer Sep 20, 2026
f737311
fix(drive): store the current-key alias for bound encryption/decrypti…
PastaPastaPasta Sep 20, 2026
c47db15
feat(platform)!: contract moderation with a banlist and a suspension …
QuantumExplorer Sep 20, 2026
b1bdff1
feat(drive): describe the element flags of the GroveDB structure (#4848)
QuantumExplorer Sep 20, 2026
0afc7a1
feat(platform)!: a reason on contract bans and suspensions (#4849)
QuantumExplorer Sep 20, 2026
72b58f6
feat(drive): record the Merk shape of layers below a template (#4850)
QuantumExplorer Sep 20, 2026
508d990
feat(platform)!: document action fees paid to the contract owner and …
QuantumExplorer Sep 20, 2026
ddc6f61
test(drive): pin that chained and composite joins prove the absence o…
QuantumExplorer Sep 20, 2026
1ebf2df
feat(platform)!: record who claimed a contract fee pot and when, quer…
QuantumExplorer Sep 20, 2026
abd1002
test(dpp): guard doctype keyword names against stray keys of contract…
QuantumExplorer Sep 20, 2026
b924b25
feat(platform)!: document ids commit to the identity contract nonce (…
QuantumExplorer Sep 20, 2026
74317a6
feat(platform)!: references to deletable documents (refersTo deletabl…
QuantumExplorer Sep 20, 2026
ad9686a
ci: re-pin PR Hygiene for state labels and /skip-bots (#4861)
shumkov Sep 20, 2026
e24aa8a
feat(platform)!: moderators delete documents of the document types th…
QuantumExplorer Sep 20, 2026
54ed7a0
feat(platform)!: document transitions state the action fee they agree…
QuantumExplorer Sep 20, 2026
4a62bb7
feat(platform)!: a window after a document's last modification for mo…
QuantumExplorer Sep 20, 2026
fa28cc2
feat(swift-example-app): share a bounded login key with a browser ove…
QuantumExplorer Sep 20, 2026
b5a93f5
chore(release): update changelog and bump version to 4.2.0-beta.3 (#4…
QuantumExplorer Sep 20, 2026
ba24d86
fix(dpp): refuse a document type schema that is not an object as an i…
QuantumExplorer Sep 21, 2026
752c47e
feat(sdk)!: derive nonce-committed document ids in the JavaScript doc…
PastaPastaPasta Sep 21, 2026
4817ade
feat(swift-sdk)!: freeze schemas only after App Store publication (#4…
llbartekll Sep 21, 2026
1d5e629
feat(platform)!: composite and flat indexOnly terminals with an entry…
QuantumExplorer Sep 21, 2026
0b89d4d
feat(platform)!: add app-connect login response system contract (#4869)
QuantumExplorer Sep 21, 2026
693b8bc
fix(contract): use the keyword-search contract id in the feature-less…
QuantumExplorer Sep 21, 2026
b554586
ci: run Rust code coverage nightly instead of on every pull request (…
QuantumExplorer Sep 21, 2026
5345a47
fix(wasm-dpp): pin the serialized contract transition length to the V…
QuantumExplorer Sep 21, 2026
c1e577b
feat(platform)!: a warning list for moderated contracts (#4872)
QuantumExplorer Sep 21, 2026
49ca692
feat(platform)!: a moderation reason names the documents it is about …
QuantumExplorer Sep 21, 2026
8af07d4
feat(platform)!: restore moderator-deleted documents from a hashed re…
QuantumExplorer Sep 21, 2026
fb9c691
ci: re-pin PR Hygiene for the checklist in the description (#4888)
shumkov Sep 21, 2026
f8e328a
ci: re-pin PR Hygiene so a bot line says everything about that bot (#…
shumkov Sep 21, 2026
047efd6
ci: re-pin PR Hygiene to ask a flaky read once more (#4894)
shumkov Sep 21, 2026
46d70d3
feat(platform)!: elected moderation team declaration with frozen elec…
QuantumExplorer Sep 21, 2026
dd461eb
fix(sdk): fetch and persist managed identity credit balances (#4799)
llbartekll Sep 21, 2026
69565ac
fix(drive-abci): recheck re-validates the document action fee agreeme…
QuantumExplorer Sep 21, 2026
3f8fb1f
ci: re-pin PR Hygiene for one name for the author limit (#4902)
shumkov Sep 21, 2026
73f6d0c
fix(drive-abci): refuse a masternode vote on an unfunded poll as an u…
QuantumExplorer Sep 22, 2026
f7bfcbc
feat(platform)!: contested indexes resolved without locking, ties to …
QuantumExplorer Sep 22, 2026
d9590e1
feat(platform)!: contract references may require the referenced contr…
QuantumExplorer Sep 22, 2026
fe90c2f
fix(swift-sdk)!: restore historical V2 migration to live V3 (#4910)
llbartekll Sep 22, 2026
1a561f2
feat(platform)!: contract references may require a minimum age of, an…
QuantumExplorer Sep 22, 2026
58e471a
feat(platform)!: elected contracts declare their own election delay, …
QuantumExplorer Sep 22, 2026
8a0befd
feat(platform)!: contract references may require the referenced contr…
QuantumExplorer Sep 22, 2026
5c047d2
feat(dpp)!: typed scalar arrays in document schemas (PV14) (#4922)
QuantumExplorer Sep 22, 2026
f2c39aa
feat(dpp)!: encode typed array elements as their scalar property type…
QuantumExplorer Sep 22, 2026
1d6497e
feat(platform)!: a document batch proof carries the owner's credit ba…
QuantumExplorer Sep 22, 2026
a358ff7
fix(dpp)!: contract updates may not change an integer property's widt…
QuantumExplorer Sep 22, 2026
afa67e6
feat(platform)!: distinctFrom on identifier properties (PV14) (#4917)
QuantumExplorer Sep 22, 2026
97dd34b
feat(platform)!: encryptedFor envelope declaration on byte properties…
QuantumExplorer Sep 22, 2026
328605f
fix(dpp)!: typed array review fixes: hyphenated list paths, element c…
QuantumExplorer Sep 22, 2026
107534d
feat(platform)!: keyRequirements on identity key references (PV14) (#…
QuantumExplorer Sep 23, 2026
ba7b075
feat(sdk): typed arrays in the Swift SDK and both mobile example apps…
QuantumExplorer Sep 23, 2026
f02c9b3
feat(platform)!: key references on the writer's own identity (PV14) (…
QuantumExplorer Sep 23, 2026
4527e5f
fix(rs-sdk-ffi)!: sanitize properties in dash_sdk_document_set_proper…
QuantumExplorer Sep 23, 2026
e4d4b7c
feat(platform)!: refersTo on typed array elements (PV14) (#4928)
QuantumExplorer Sep 23, 2026
14f9fb0
feat(dpp): exact and untagged untrusted state transition decode via t…
QuantumExplorer Sep 23, 2026
af350a9
feat(platform)!: document references resolved through a unique index …
QuantumExplorer Sep 23, 2026
40351f6
ci: re-pin PR Hygiene (#4935)
shumkov Sep 23, 2026
9953165
feat(platform)!: anyOf and allOf reference expressions (PV14) (#4942)
QuantumExplorer Sep 23, 2026
85328a5
ci: re-pin PR Hygiene (#4945)
shumkov Sep 23, 2026
c909cd3
fix(dpp)!: refuse lookup key sources inside a transient object (PV14)…
QuantumExplorer Sep 23, 2026
c114ce4
fix(dpp): refuse encryptedFor paths inside a transient object (PV14) …
QuantumExplorer Sep 23, 2026
1143b4b
feat(platform)!: ownerRefersTo and creatorRefersTo, references on the…
QuantumExplorer Sep 23, 2026
b24b79b
refactor(dpp): share one is_transient helper for lookup sources and e…
QuantumExplorer Sep 23, 2026
3044153
chore(dashmate): use Tenderdash 1.8.x image (#4944)
lklimek Sep 23, 2026
7756b76
feat(platform)!: listElement references into a list of a referenced d…
QuantumExplorer Sep 23, 2026
411590b
fix(platform)!: drop transient values on replace and refuse declarati…
QuantumExplorer Sep 23, 2026
58bfae8
feat(platform)!: moderation charters system data contract (#4898)
QuantumExplorer Sep 23, 2026
8825bcd
feat(sdk): encryptedFor helpers and moderation charter readers (#4953)
QuantumExplorer Sep 24, 2026
342b720
fix(drive-abci)!: bill the contract fetch of a fee claim deterministi…
QuantumExplorer Sep 24, 2026
db2fad6
feat(platform)!: maxBytes, a UTF-8 byte cap on document strings (PV14…
QuantumExplorer Sep 24, 2026
e38b6e3
fix(platform)!: register the version 14 system contracts without stor…
QuantumExplorer Sep 24, 2026
458bebb
test(drive-abci): replay the version 10 upgrade events on a chain bor…
QuantumExplorer Sep 24, 2026
dd93756
feat(platform)!: masternode votes cost 80% less (PV14) (#4959)
QuantumExplorer Sep 24, 2026
6c3b388
fix(drive): credit other identities' refunds when the payer's refund …
QuantumExplorer Sep 24, 2026
049679d
feat(platform)!: propertyConstraints, integer rules between document …
QuantumExplorer Sep 24, 2026
a033450
feat(platform)!: elected moderation teams moderate from their stored …
QuantumExplorer Sep 24, 2026
7fc89b9
fix(drive-abci): a failed identity create from addresses keeps its in…
QuantumExplorer Sep 24, 2026
b574744
fix(drive-abci): a failed identity create from addresses pays a flat …
QuantumExplorer Sep 24, 2026
c3ba931
feat(platform)!: deletable charter team changes and lookups on deleta…
QuantumExplorer Sep 24, 2026
e246f55
feat(platform)!: charter elections use the target contract's windows …
QuantumExplorer Sep 24, 2026
68aa586
fix(drive-abci)!: refuse an identity create from addresses with a fai…
QuantumExplorer Sep 24, 2026
8325592
refactor(dpp): remove the empty moderation charter validation step (#…
QuantumExplorer Sep 24, 2026
5bf351d
feat(platform)!: elected moderation declares whether its seat is cont…
QuantumExplorer Sep 24, 2026
cea41c7
feat(platform)!: moderation team reward split, action counters and re…
QuantumExplorer Sep 24, 2026
6c95cd8
chore(release): update changelog and bump version to 4.2.0-beta.4 (#4…
QuantumExplorer Sep 24, 2026
50e6adc
ci(release): raise NPM and Swift SDK release job timeouts (#4974)
shumkov Sep 24, 2026
7d0f1a6
ci: re-pin PR Hygiene (#4975)
shumkov Sep 24, 2026
ac3d94e
ci: re-pin PR Hygiene (#4979)
shumkov Sep 24, 2026
9eb59ec
fix(drive-abci)!: refuse a $creatorId key reference on a document wit…
QuantumExplorer Sep 24, 2026
92857f7
ci: re-pin PR Hygiene (#4989)
shumkov Sep 24, 2026
25e6473
fix(drive-abci)!: re-check a contract reference's owner requirement o…
QuantumExplorer Sep 25, 2026
3d7554a
fix(dpp)!: refuse immutableAllowSetting on a deletableDocument refere…
QuantumExplorer Sep 25, 2026
9af3d3b
fix(platform)!: credit repaid identity debt to the processing fee poo…
QuantumExplorer Sep 25, 2026
ffd4fb4
fix(drive)!: merge repeated writes of one balance in a batch so an ac…
QuantumExplorer Sep 25, 2026
2498727
feat(drive-abci)!: allow contested documents before epoch 4 (#4995)
QuantumExplorer Sep 25, 2026
e86dd16
fix(drive-abci)!: refuse a token mint or direct purchase past the i64…
QuantumExplorer Sep 25, 2026
d76a0f8
fix(drive)!: delete an ended vote poll end date only once none of its…
QuantumExplorer Sep 25, 2026
add1f4a
fix(drive-abci)!: refuse a masternode vote for an identity that is no…
QuantumExplorer Sep 25, 2026
5ac99ad
feat(rs-dapi): refuse shielded broadcasts from addresses that keep se…
QuantumExplorer Sep 25, 2026
7829c84
test(drive): keep setup_drive's temp directory alive while the drive …
QuantumExplorer Sep 25, 2026
cca6c0f
fix(drive): read stored group actions without the proof decoding budg…
QuantumExplorer Sep 26, 2026
d53d110
fix(drive-abci): check the address input limit before verifying witne…
QuantumExplorer Sep 26, 2026
1f50695
fix(rs-sdk-ffi): stop probing google.com and testnet quorums on every…
QuantumExplorer Sep 26, 2026
0621670
test(swift-sdk): run SDKMethodTests against the offline mock SDK inst…
QuantumExplorer Sep 26, 2026
d23f444
fix(drive-abci)!: refuse bytes after a state transition (PV14) (#5011)
QuantumExplorer Sep 26, 2026
a876bc9
perf(drive): build batch deletes without copying the pending batch (#…
QuantumExplorer Sep 26, 2026
f6504e5
fix(drive-abci)!: claw a storage refund back from the epochs it was p…
QuantumExplorer Sep 26, 2026
472b84f
fix(drive)!: an evonode's token claim covers only the epochs it read …
QuantumExplorer Sep 26, 2026
ecb9d20
ci: re-pin PR Hygiene (#5016)
shumkov Sep 26, 2026
88136e6
ci: re-pin PR Hygiene and wake it on a hand-over (#5020)
shumkov Sep 26, 2026
2f54ec8
ci: re-pin PR Hygiene (#5023)
shumkov Sep 26, 2026
5e4b799
fix(drive-abci): verify vote extensions against the withdrawals of th…
QuantumExplorer Sep 27, 2026
39e7850
feat(platform)!: documents with a time to live, deleted by the platfo…
QuantumExplorer Sep 27, 2026
0abaa0b
fix(drive-abci): sign and verify vote extensions of a block accepted …
QuantumExplorer Sep 27, 2026
fb73ef8
perf(drive-abci): read shielded encrypted notes in one chunk-aligned …
QuantumExplorer Sep 27, 2026
b43b030
chore: open every pr-description output with a basic explanation sect…
QuantumExplorer Sep 27, 2026
298f013
fix(sdk): don't panic in DapiClient::new on an empty address list (#4…
PastaPastaPasta Sep 27, 2026
52cd646
chore: sync the pr-description skill with the PR template and title c…
QuantumExplorer Sep 27, 2026
f4426b2
fix(drive-abci)!: cap a contest at 1,000 contenders and tally every o…
QuantumExplorer Sep 27, 2026
dc42371
ci: build release SDKs and NPM packages on self-hosted runners (#4562)
PastaPastaPasta Sep 27, 2026
74d3352
chore(swift-sdk): freeze App Store schema 3.0.0
github-actions[bot] Sep 27, 2026
5febda1
feat(platform)!: a contender's fund doubles for every 50 contenders a…
QuantumExplorer Sep 27, 2026
8936d44
feat(platform)!: anyOf, allOf and not in propertyConstraints rules (P…
QuantumExplorer Sep 27, 2026
e8c4d1b
feat(platform)!: present and absent tests in propertyConstraints rule…
QuantumExplorer Sep 27, 2026
b48edfe
feat(platform)!: in, value membership in propertyConstraints rules (P…
QuantumExplorer Sep 27, 2026
e1325f8
feat(platform)!: boolean operands in propertyConstraints rules (PV14)…
QuantumExplorer Sep 27, 2026
eeed935
fix(platform)!: contenders state the most they pay and are charged th…
QuantumExplorer Sep 27, 2026
7a57518
feat(platform)!: pay document ttl storage fees to the epochs the docu…
QuantumExplorer Sep 27, 2026
50b9fb1
feat(platform)!: string equality for enums in propertyConstraints rul…
QuantumExplorer Sep 27, 2026
5c79d12
chore(release): update changelog and bump version to 4.2.0-beta.5 (#5…
QuantumExplorer Sep 27, 2026
d5a5875
feat(platform)!: compare two string properties in propertyConstraints…
QuantumExplorer Sep 27, 2026
3840c2f
feat(platform)!: string ifAbsent defaults in propertyConstraints rule…
QuantumExplorer Sep 27, 2026
3b190e9
feat(platform)!: identifier comparisons in propertyConstraints rules …
QuantumExplorer Sep 27, 2026
4d4f38d
feat(platform)!: $ownerId comparisons in propertyConstraints rules (P…
QuantumExplorer Sep 27, 2026
b33aba1
refactor(dpp): restore shipped registration_cost v1 index parsing (#5…
QuantumExplorer Sep 27, 2026
f0b7108
refactor(drive): create once-per-identity claim trees in insert_contr…
QuantumExplorer Sep 27, 2026
3e6e258
fix(dpp): parse nested required and transient entries by prefix (#5050)
QuantumExplorer Sep 27, 2026
1b30651
feat(sdk): propertyConstraints discovery and pre-check in the JS SDK …
QuantumExplorer Sep 27, 2026
a5a1af5
feat(sdk): propertyConstraints rules and pre-check in the Swift SDK a…
QuantumExplorer Sep 27, 2026
f487972
docs: add a contract keywords reference page to the book (#5067)
QuantumExplorer Sep 27, 2026
8783489
feat(sdk): propertyConstraints rules and pre-check in the Kotlin SDK …
QuantumExplorer Sep 27, 2026
3f15eea
docs(platform): document the genesis protocol version exception and S…
QuantumExplorer Sep 27, 2026
86c948d
test(drive): pin that a cached contract read after an in-block update…
QuantumExplorer Sep 27, 2026
8340446
fix(dpp): restore the shipped order of basic consensus errors (#5053)
QuantumExplorer Sep 27, 2026
a9e3a2f
ci: bootstrap PR-first runner images on v4.2-dev
infraclaw-dash Sep 27, 2026
db75bab
ci: reconcile rootless runner workflows with v4.2-dev
infraclaw-dash Sep 27, 2026
9c39e66
docs(platform): say why in-place edits to shipped generations are ine…
QuantumExplorer Sep 27, 2026
5c8c4dd
refactor(platform): fold DRIVE_ABCI_QUERY_VERSIONS_V3 into V2 (#5057)
QuantumExplorer Sep 27, 2026
013dce6
test: follow the test conventions in tests added in 4.1 and 4.2 (#5062)
QuantumExplorer Sep 27, 2026
29b6a16
ci: bootstrap PR-first runner image publishing (#4912)
ktechmidas Sep 27, 2026
d3b96b3
refactor(platform): import instead of inline crate paths in 4.1 and 4…
QuantumExplorer Sep 27, 2026
cd604da
Merge branch 'v4.2-dev' into codex/rootless-ci-hardening
ktechmidas Sep 27, 2026
c1dcfc9
ci: remove host privilege requirements from persistent Linux runners …
ktechmidas Sep 27, 2026
b60bcdb
docs(platform): add Parameters and Returns sections to 4.1 and 4.2 di…
QuantumExplorer Sep 27, 2026
07ab909
fix(ci): build release clients natively on unprivileged runners
PastaPastaPasta Sep 27, 2026
3cb2a8d
fix(release): require all generated clients in packed archives
PastaPastaPasta Sep 27, 2026
a7a4c57
fix(ci): isolate release runners from PR build state
PastaPastaPasta Sep 27, 2026
eaa9d1e
fix(release): build clients natively on unprivileged runners (#5068)
ktechmidas Sep 27, 2026
ab2aaa4
fix(swift-sdk): take migration copies out of WAL mode
jeanpierreroma Sep 27, 2026
3120a22
chore(swift-sdk): freeze App Store schema 3.0.0
github-actions[bot] Sep 27, 2026
e090ae2
fix(dpp)!: refuse token cost and unruled keyword changes on update wi…
QuantumExplorer Sep 27, 2026
d7d5c84
fix(dpp)!: accept a reordered entryPayload and refuse unruled keyword…
QuantumExplorer Sep 27, 2026
55f0587
docs(swift-sdk): say the migration copy is switched out of WAL mode
jeanpierreroma Sep 27, 2026
2302a80
docs: give every contract keyword its own chapter in the book (#5075)
QuantumExplorer Sep 27, 2026
24b228a
fix(dpp)!: propertyConstraints compare identifier properties that dec…
QuantumExplorer Sep 27, 2026
5e1e7e0
fix(ci): isolate NPM and Kotlin releases in disposable runners
infraclaw-dash Sep 27, 2026
9cd341c
docs(release): fix NPM dry-run tag example
infraclaw-dash Sep 27, 2026
10b1c2c
feat(platform)!: string length, byte length and array count operands …
QuantumExplorer Sep 27, 2026
81ee8df
feat(platform)!: creation, update and transfer times and heights in p…
QuantumExplorer Sep 27, 2026
37a7785
fix(wasm-sdk): leave price tier validation to rs-dpp (#5058)
QuantumExplorer Sep 27, 2026
406ca9a
docs: list the complete contract language in the keywords overview (#…
QuantumExplorer Sep 27, 2026
91a88b0
fix(dpp)!: report contracts refused by parser generation 3 as consens…
QuantumExplorer Sep 27, 2026
c5e80c9
fix(drive-abci): sign a locked block when a later proposal left no ex…
QuantumExplorer Sep 27, 2026
e7aed01
feat(platform)!: contains in propertyConstraints rules (PV14) (#5083)
QuantumExplorer Sep 27, 2026
da7cc2d
fix(drive-abci): sign vote extensions only for blocks this node accep…
QuantumExplorer Sep 27, 2026
6d58d7e
feat(platform)!: startsWith and endsWith in propertyConstraints rules…
QuantumExplorer Sep 27, 2026
5870cdd
fix(wasm-sdk): keep StateTransitionResult.ownerBalance exact in JSON …
QuantumExplorer Sep 27, 2026
b23a06b
fix(dpp)!: size estimates of strings of 16384 or more characters no l…
QuantumExplorer Sep 27, 2026
55a05ae
fix(drive-abci): finalize a block accepted in an earlier round after …
QuantumExplorer Sep 27, 2026
d38592f
docs: remove committed working specs and plans (#5060)
QuantumExplorer Sep 27, 2026
c4125c9
docs: encrypt the 69-byte compact xpub in the contact-request guide (…
QuantumExplorer Sep 27, 2026
e0937ce
feat(kotlin-sdk)!: new propertyConstraints read kinds and system read…
QuantumExplorer Sep 27, 2026
7894963
feat(swift-sdk)!: new propertyConstraints read kinds and system reads…
QuantumExplorer Sep 28, 2026
a1d4d85
feat(platform)!: ifThen, ifThenElse, notIn, min, max and abs in prope…
QuantumExplorer Sep 28, 2026
f40ee0a
test(sdk): ifThen and ifThenElse rules through rs-sdk-ffi and the Swi…
QuantumExplorer Sep 28, 2026
fc6e394
feat(platform)!: elected moderation windows may be 0 off mainnet, mai…
QuantumExplorer Sep 28, 2026
2ee0b56
chore(swift-sdk): freeze App Store schema 3.0.0
github-actions[bot] Sep 28, 2026
8d587f2
fix(dpp)!: propertyConstraints read empty objects as absent and follo…
QuantumExplorer Sep 28, 2026
eae2859
feat(platform)!: countOf and sumOf totals from count and sum trees in…
QuantumExplorer Sep 28, 2026
bed9b16
fix(dpp): pass the contract's $defs to the countOf and sumOf key enum…
QuantumExplorer Sep 28, 2026
dd01f49
fix(sdk): consensus errors reach JS with their code (#5112)
QuantumExplorer Sep 28, 2026
8c29a53
feat(platform)!: generatedFrom, string properties the platform genera…
QuantumExplorer Sep 28, 2026
06d9675
fix(drive)!: subscription filters match generated properties a transi…
QuantumExplorer Sep 28, 2026
052071c
chore(swift-sdk): freeze App Store schema 3.0.0 (#5035)
llbartekll Sep 28, 2026
e826b8f
fix(swift-sdk): take migration copies out of WAL mode (#5070)
llbartekll Sep 28, 2026
c5dee05
fix(swift-sdk): free FFI errors in state-transition wrappers (#5117)
QuantumExplorer Sep 28, 2026
c83c2c0
fix(sdk): consensus errors reach Swift and Kotlin apps with their cod…
QuantumExplorer Sep 28, 2026
b3d59b8
fix(swift-sdk): documentTransfer handles a missing document and signs…
QuantumExplorer Sep 28, 2026
aba908b
fix(platform)!: refuse own-type totals on contested types and fail lo…
QuantumExplorer Sep 28, 2026
7799497
feat(sdk)!: countOf and sumOf totals in the rule descriptors of the J…
QuantumExplorer Sep 28, 2026
812d630
fix(platform)!: a preallocated agreement source must fit a tree key (…
QuantumExplorer Sep 28, 2026
4a8998f
ci: use pinned ARM64 Rust images on Mac-backed Linux runners
infraclaw-dash Sep 28, 2026
b281e39
ci: isolate ARM64 image updates from the ordinary runner pool
infraclaw-dash Sep 28, 2026
16afde9
fix(ci): keep wallet FFI test pointer cast portable on ARM64
infraclaw-dash Sep 28, 2026
e776f95
fix(sdk): bound each DAPI request attempt, including the response bod…
llbartekll Sep 28, 2026
5298d20
chore(release): update changelog and bump version to 4.2.0-beta.6 (#5…
QuantumExplorer Sep 28, 2026
013ff40
ci: use pinned ARM64 Rust images on Mac-backed Linux runners (#5124)
ktechmidas Sep 28, 2026
1ef7a02
fix(release)!: run NPM and Kotlin releases on disposable runners (#5077)
ktechmidas Sep 28, 2026
52e03df
fix(ci): repair headless Swift keychains and PIC RocksDB
infraclaw-dash Sep 28, 2026
6d42b15
fix(kotlin-sdk): prepare secure emulator state in nightly tests
infraclaw-dash Sep 28, 2026
bf19672
fix: bound doctest linker concurrency on CI runners
infraclaw-dash Sep 28, 2026
f33d18b
fix: update trusted runner image controller pin
infraclaw-dash Sep 28, 2026
8157568
fix(drive)!: refuse a duplicate value in a unique index on a nested p…
QuantumExplorer Sep 28, 2026
c0589ec
fix: repair headless Swift, RocksDB and doctest CI (#5129)
ktechmidas Sep 28, 2026
6cff96f
fix(kotlin-sdk): prepare secure emulator state in nightly tests (#5131)
ktechmidas Sep 28, 2026
4d1f0cc
fix: update trusted runner image controller pin (#5134)
ktechmidas Sep 28, 2026
99207ac
fix(drive-abci): check_tx refuses a masternode vote a block would ref…
QuantumExplorer Sep 28, 2026
91db70a
fix(sdk): masternodeVote takes the ProTxHash as an Identifier and ret…
QuantumExplorer Sep 28, 2026
b936d4c
fix(sdk): index-only document creates and deletes resolve once they l…
QuantumExplorer Sep 28, 2026
af86fc7
fix(sdk): accept vote poll end-date timestamps (#5139)
QuantumExplorer Sep 28, 2026
ad99cc1
fix(ci): resolve Kotlin release NDK from runner environment
infraclaw-dash Sep 28, 2026
1096df9
ci(kotlin-sdk): resolve release NDK from runner environment (#5141)
ktechmidas Sep 28, 2026
4d13315
feat(sdk)!: DataContract.validateUpdate in @dashevo/wasm-dpp2 (#5140)
QuantumExplorer Sep 28, 2026
08012d9
ci: deploy isolated PR Hygiene engine on v4.2
infraclaw-dash Sep 28, 2026
dbcc118
ci: deploy isolated PR Hygiene engine on v4.2 (#5142)
ktechmidas Sep 28, 2026
d22f8ab
fix(drive): refuse indexOnly prefix pivots whose pages could be incom…
QuantumExplorer Sep 28, 2026
1368fbb
fix(platform-wallet): a ProUpServTx always carries an output (#5105)
QuantumExplorer Sep 28, 2026
b40e4db
feat: add Value::same_scalar_data for comparing single values across …
QuantumExplorer Sep 28, 2026
1464314
fix(dpp)!: refuse a dotted property path in sum and average keywords …
QuantumExplorer Sep 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
22 changes: 18 additions & 4 deletions .claude/skills/pr-description/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ Generate a pull request title and description for the current branch using the p
1. Determine the base branch:
- Use the argument if provided
- Otherwise, auto-detect: `git remote set-head origin --auto >/dev/null 2>&1 && git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's|refs/remotes/||'`
- Fall back to `v4.0-dev` if the command above fails
- If that fails, use the repository's default branch on GitHub: `gh repo view --json defaultBranchRef -q .defaultBranchRef.name`
- If both fail, ask the user rather than guessing a version branch

2. Gather context by running these git commands:
- `git log --oneline $(git merge-base HEAD <base>)..HEAD` — all commits on this branch
Expand All @@ -25,19 +26,30 @@ Generate a pull request title and description for the current branch using the p
- What specific code changes were made
- Whether there are breaking changes
- What tests were added or modified
- What value the change adds, and for whom
- What could go wrong: consensus impact, behaviour users could notice, slow or flaky tests

4. Output a suggested PR title using conventional commits format:
- Scopes: `sdk`, `drive`, `dpp`, `dapi`, `dashmate`, `wasm-dpp`, `wasm-sdk`, `platform`
- Types: `feat`, `fix`, `refactor`, `chore`, `docs`, `test`, `build`
- Types and scopes: use only the `types:` and `scopes:` lists in `.github/workflows/pr.yml`. The PR title check rejects anything else, so read them from that file rather than from memory
- The scope is optional: leave it out (e.g. `chore: ...`) when the change spans several packages or no listed scope fits. Never invent a scope
- The subject must not start with an uppercase letter
- Add `!` after the type for breaking changes (e.g. `feat!:`)
- Format: **Suggested title:** `type(scope): description`

5. Fill in this PR template (preserve all HTML comments exactly as shown):
5. Fill in this PR template (preserve all HTML comments exactly as shown). The `## Basic explanation` section always comes first; the sections after it follow `.github/PULL_REQUEST_TEMPLATE.md`. If that file differs from the copy below, follow the file:

```markdown
<!--- Provide a general summary of your changes in the Title above -->
<!--- Pull request titles must use the [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/#summary) format -->

## Basic explanation

**What this does:** <The change in the most basic terms, for a reader who does not know this code. Explain any jargon in passing, or avoid it.>

**Value:** <What gets better and for whom (users, wallets, node operators, the network). Give a number when there is one.>

**Risks:** <What could go wrong, sized honestly: say "Low" and why when it is low. Mention consensus impact, behaviour users could notice, and slow or flaky tests.>

## Issue being fixed or feature implemented
<!--- Why is this change required? What problem does it solve? -->
<!--- If it fixes an open issue, please link to the issue here. -->
Expand Down Expand Up @@ -69,6 +81,7 @@ Generate a pull request title and description for the current branch using the p
- [ ] 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
- [ ] If I added or changed GroveDB structure, I described it in the area's `structure.rs`, regenerated `grovedb-structure.json`, and checked the structure viewer link posted on this pull request

**For repository code-owners and collaborators only**
- [ ] I have assigned this pull request to a milestone
Expand All @@ -80,6 +93,7 @@ Output the entire PR description (title + body) as a single raw Markdown code bl

## Guidelines

- Always open with `## Basic explanation`: three short paragraphs (what it does, value, risks) that someone outside this code can follow. For a security fix, keep it neutral: describe what the fix does, not how the bug could be exploited
- Keep the description **concise** — avoid walls of text. Prefer short bullet points over paragraphs
- Be specific — reference file paths, struct/function names, and types
- For "How Has This Been Tested?", check `git diff` for new `*test*`, `*spec*` files. Briefly describe what tests cover (1 line per test file), not every individual test case
Expand Down
18 changes: 18 additions & 0 deletions .claude/skills/prs/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
name: prs
description: "Your pull requests and the ones waiting on you, across Platform, rust-dashcore, Tenderdash, GroveDB and Dash Evo Tool: what each is blocked on, how long it has waited, and how many of your five slots per repository are taken. Use for /prs or any request to inspect the review queue."
---

# PRs

Use the shared policy reporter in `dashpay/stale_prs_are_bad`. Clone or locate that repository (`$PR_REVIEW_HOME` if set, else `gh repo clone dashpay/stale_prs_are_bad` into a temporary directory) and read its `guides/PR_REVIEW_ARCHITECTURE.md` for the policy and `guides/PR_REVIEW_OPERATIONS.md` for setup and limitations.

1. Resolve the current GitHub user with `gh api user --jq .login`, unless the user names another reviewer.
2. From that checkout's root run `python3 -m pr_review.aggregate report --user USER`. For structured output add `--format json`; to limit repositories add `--repo dashpay/REPOSITORY`. For one PR run `python3 -m pr_review.main report --repo dashpay/REPOSITORY --pr NUMBER`; the policy comes from that checkout's `policies/`.
3. Present two sections. First, what is waiting on this person to review: oldest first, with links, touched areas and the next action. Second, their own pull requests and what each is blocked on — a bot that has not reported, an unresolved bot thread, a change request, a missing self-review, or a slot that is still queued. Use repository-qualified PR identifiers. Distinguish author action, bot work, missing access, and the five-PR admission queue within each repository. Combined totals above five are workload warnings, not a global hard cap.
4. Waiting time is the current recorded human-review cycle. If no controller state exists, say the age is not recorded. Do not equate total PR age with review waiting time.
5. The report says nothing about CI. It reads this policy's own commit status and never the repository's check runs, so never state or imply that a build passed or failed. If asked about CI, say it is not covered and read the checks directly.

This command is read-only. It does not perform the code review itself. Never post `/self-reviewed`, submit an approval, request reviewers, change labels, or send Slack messages merely because this skill was invoked. Author self-review is a personal attestation after inspecting the current diff and bot outcomes; it cannot be inferred from a bot run.

If any repository evidence is incomplete or inaccessible, name that repository and state that totals are partial. Preview policy rows are computed recommendations, not live enforcement. Report the error. Do not invent readiness or approval. Report preview results as computed policy, not proof that repository enforcement has been activated.
32 changes: 15 additions & 17 deletions .codecov.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
codecov:
require_ci_to_pass: true

# The rust-strategy and rust-shielded suites run only on push/nightly (PRs
# skip them for speed); carryforward makes codecov reuse the base commit's
# coverage for a flag when a PR run doesn't upload it, so PR reports don't
# show a spurious project-coverage drop for tests that intentionally didn't
# run.
# Coverage is collected by the nightly run of tests.yml only (23:00 UTC on
# the dev branches); pull request and post-merge push runs execute the same
# tests uninstrumented and upload nothing. Every nightly uploads all three
# flags; carryforward only matters when one phase fails and its report is
# missing, so a single broken phase doesn't read as a coverage drop for the
# whole suite.
flags:
rust:
carryforward: true
Expand Down Expand Up @@ -52,6 +53,8 @@ ignore:
- "packages/data-contracts/src/**"
- "packages/dpns-contract/src/**"
- "packages/keyword-search-contract/src/**"
- "packages/app-connect-contract/src/**"
- "packages/moderation-charters-contract/src/**"
- "packages/masternode-reward-shares-contract/src/**"
- "packages/token-history-contract/src/**"
- "packages/wallet-utils-contract/src/**"
Expand Down Expand Up @@ -108,11 +111,6 @@ ignore:
- "packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/**/v1_methods.rs"
# Platform wallet — requires Core wallet integration, not unit-testable
- "packages/rs-platform-wallet/src/**"
# Platform wallet storage — its tests run in the wallet fast-path
# workflow (tests-rs-wallet.yml), which intentionally omits coverage
# upload, so codecov never receives data for this crate on
# wallet-scoped PRs and patch status would fail spuriously
- "packages/rs-platform-wallet-storage/**"
# Proof-verifier response types and unproved handling
- "packages/rs-drive-proof-verifier/src/types.rs"
- "packages/rs-drive-proof-verifier/src/unproved.rs"
Expand Down Expand Up @@ -158,20 +156,20 @@ ignore:
# Versioned dispatch methods — pure version routing with no logic
- "packages/rs-dpp/src/data_contract/document_type/methods/versioned_methods.rs"

# Statuses attach to the nightly commit only (no PR ever uploads), so they
# are informational: a nightly dip shows on the Codecov commit page without
# painting the branch tip red. Patch coverage has no meaningful base without
# PR uploads, and PR comments have nothing to attach to.
coverage:
status:
project:
default:
target: auto
threshold: 2%
patch:
default:
target: 50%
informational: true
patch: off

comment:
layout: "condensed_header, diff, components, condensed_files"
behavior: default
require_changes: true
comment: false

component_management:
individual_components:
Expand Down
8 changes: 8 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,13 @@ end_of_line = lf
[*.rs]
indent_size = 4

# Swift and Kotlin follow their languages' 4-space convention.
[*.{swift,kt,kts}]
indent_size = 4

# Preserve the existing indentation of the Swift SDK Python scripts.
[packages/swift-sdk/scripts/*.py]
indent_size = 4

[*.{md,markdown}]
trim_trailing_whitespace = false
8 changes: 8 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Generated from dashpay/stale_prs_are_bad policies/platform.json; do not edit by hand.
#
# Review routing for this repository is controlled by PR Hygiene:
# https://github.com/dashpay/stale_prs_are_bad/blob/master/policies/platform.json
#
# This file has no rules on purpose. Reviewers are requested by the policy
# once the bots have reported and the author has self-reviewed, not by
# GitHub the moment a pull request is opened.
103 changes: 103 additions & 0 deletions .github/NPM_RUNNER.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
# NPM release runners

NPM release compilation uses a fresh single-job runner with a unique
`platform-release-<run-id>-<attempt>-npm` label in the `platform-release-builds`
runner group. Kotlin releases use the same lifecycle with a `-kotlin` label. Publishing
continues on GitHub-hosted Ubuntu with OIDC; the builder receives no publishing
credentials. The `npm-release-build` action is shared by releases and image
validation so both compile and pack with the same setup.

## Image contract

`.github/runner-requirements.json` pins the complete Linux image requirements and
recipe commit. The job runs `ci-image-contract verify` before compiling. The
runner must have `/opt/client-codegen` matching `packages/dapi-grpc/codegen.json`.
Its protobuf 3.18.1 compiler is intentionally separate from Rust's protoc 32.0.
TypeScript generation comes from the workspace's pinned `ts-protoc-gen` dependency.

Image-owned native dependencies are verified, never installed using sudo. Rust,
Node and the pinned WASM tools use writable runner/user locations. Cargo targets
remain in job-local HOME; each release starts with fresh runner, HOME and workspace state. The
runner needs no Docker CLI/socket or KVM device.

## Provisioning and promotion

Use the reviewed `dashpay/dash-selfhosted-image` recipe and a tested immutable
image digest, not a moving tag. Deploy the host-side disposable release controller
only after the NPM validation workflow succeeds on that image. Do not add generic
release labels to persistent CI registrations. See the
[controller installation and cleanup runbook](https://github.com/dashpay/dash-selfhosted-image/blob/main/docs/disposable-releases.md).
Old release tags
still contain their original workflows and do not automatically gain this fix.

Requirements-changing PRs select a candidate label bound to the complete PR head
and image digest. The image controller must support the `npm` job kind and
`.github/workflows/npm-runner-validation.yml`. Manifests requesting native client
generation require successful Rust, Kotlin and NPM candidate jobs for promotion;
skipped fork jobs do not qualify. Existing same-repository/trusted-fork guards
remain in effect.

The trusted `runner-image-candidate.yml` bootstrap, controller and Rust/Kotlin
candidate routing must be installed on each consuming branch before candidate
promotion can work. Platform PRs #4702 and #4912 establish those pieces; reconcile
their requirements/selector files with this NPM extension when landing them. In
particular, update both the bootstrap's reusable-workflow SHA and its
`control_revision` to a reviewed image-repository revision supporting
`client_codegen` and `npm`. Merely changing `recipe_revision` is insufficient.
The default `v4.2-dev` and `v4.3-dev` branches must each use an explicit compatible
manifest; this change does not alter an existing release tag or deploy a runner.

## Verification

`npm-runner-validation.yml` runs the real release build and packing action, DAPI
unit tests, and a byte-for-byte check that packed Node/web clients match the
freshly generated files. It uploads tarballs but never publishes them.
`test-client-codegen.yml` also builds the native compilers on hosted Linux/macOS,
checks committed generated output, tests failure recovery and validates packing.

Local setup and generator test commands are in `packages/dapi-grpc/README.md`.

After installing the controller, use the `release.yml` dispatch with
`tag=npm-test:v<package.json version>` on a protected development branch for a non-publishing
NPM build. For Kotlin, dispatch `release-kotlin-sdk.yml` from the protected branch
with an existing published `tag` and `dry_run=true`: compilation/artifact upload
run, but release attachment and Maven publication are both skipped. Check that
the image contract matches the selected source. Neither controller unit tests
nor an image smoke test establishes that these end-to-end jobs pass.

## Separate PR and release state

The `platform-release-builds` organization runner group selects only
`dashpay/platform` and contains only controller-created one-job registrations.
Each build requests:

```yaml
runs-on:
group: platform-release-builds
labels: [self-hosted, Linux, X64, 'platform-release-${{ github.run_id }}-${{ github.run_attempt }}-npm']
```

There is no fallback to `npm-build`, `rust-ci` or `kotlin-ci`. Without the
controller, builds stay queued. Runtime markers reject accidental routing to an
ordinary runner; they are not cryptographic attestation. The host controller
independently checks repository, event, workflow, run, attempt and commit before
creating fresh JIT capacity. Only one job can consume each registration; the host
destroys its container/processes, HOME, registration and workspace afterward.

**Ordinary PR caching is unchanged.** PR validation keeps its own persistent
Cargo/Gradle/Yarn caches. Releases reuse the prebaked image/toolchains but never
mount PR state or restore shared executable dependency caches. Yarn caching is
opted out only for the release runtime; Kotlin release build/publication disable
Gradle cache restores. A cold release compile is the intentional tradeoff; do not
reintroduce shared caches to speed it up without reviewing their writer trust.

`release.yml` calls its local reusable workflow, so the workflow travels with the
release source. Port it and the matching image requirements to 4.3; the host
controller needs no branch-specific allowlist. Branch protection, trusted tags,
fork approvals and hosted publishing authorization remain necessary. Optional
selected-workflow group restrictions are defense in depth, not the mechanism
that erases prior-job state. Labels alone are not authorization.

This assumes a trusted host and pinned image. A fresh container does not repair
host compromise or retroactively secure old release tags/artifacts. Merge/deploy
the controller before relying on this workflow change for a release.
1 change: 1 addition & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
- [ ] 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
- [ ] If I added or changed GroveDB structure, I described it in the area's `structure.rs`, regenerated `grovedb-structure.json`, and checked the structure viewer link posted on this pull request

**For repository code-owners and collaborators only**
- [ ] I have assigned this pull request to a milestone
Loading