You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs(ffi): code 29 is live under #4361; retire every stale code-38 frontier reference
The registry called 29 lapsed, but #4361's head declares
ErrorAssetLockInsufficientFunds = 29 — the typed asset-lock shortfall
carried the allocation forward when #4316 closed. Row 29 now records the
live owner and lineage. The remaining instructions that still pointed
PR #3968 (and any new allocation) at the obsolete 38 frontier now point
at the frontier note, and the 2026-08-04 verification checklist is
date-stamped as the historical snapshot it is.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
**Next allocatable integer: 42** — 27–41 are all claimed (27, 31, 34–41
115
-
merged; 28–30, 32 and 33 reserved). **28–30, 32 and 33 are RESERVED, not
116
-
free**: 28 and 30 were vacated when the reservation trio moved to 34–36; 29,
117
-
32 and 33 lapsed when their in-repo owners (#4316, #4310, #4311) closed
118
-
without merging. All five are deliberately left unclaimed rather than
119
-
back-filled, so no number is reused within a single review cycle. Rule 1's
120
-
"do not reuse a gap unless this file marks it free" applies — this file does
121
-
**not** mark any of them free, so the frontier is the only allocation source
122
-
and a new code takes 42.
115
+
merged; 29 proposed by active #4361; 28, 30, 32 and 33 reserved). **28, 30,
116
+
32 and 33 are RESERVED, not free**: 28 and 30 were vacated when the
117
+
reservation trio moved to 34–36; 32 and 33 lapsed when their in-repo owners
118
+
(#4310, #4311) closed without merging. All four are deliberately left
119
+
unclaimed rather than back-filled, so no number is reused within a single
120
+
review cycle. Rule 1's "do not reuse a gap unless this file marks it free"
121
+
applies — this file does **not** mark any of them free, so the frontier is
122
+
the only allocation source and a new code takes 42.
123
123
124
124
## Proposed allocations (open PRs)
125
125
@@ -131,23 +131,26 @@ fork-era PRs that originally held these allocations (#4184, #4185, #4204,
131
131
plus #4247 and #4256) were closed and recreated in-repository per repo
132
132
policy. Of the successors: #4308**merged** (the trio, 34–36 — now in the
133
133
merged table); three others — #4316, #4310 and #4311 — **closed without
134
-
merging** (29, 32, 33 lapse to RESERVED); and #4313 (the shielded-invite
134
+
merging** (32 and 33 lapse to RESERVED; 29 is carried live by #4361, which
135
+
holds the typed shortfall today); and #4313 (the shielded-invite
135
136
claim) lost 37 to merged #4348 and takes the frontier when it revives.
136
137
Fork-era numbers remain in the collision history, which is immutable record.
137
138
138
139
| Code | Name | Owning PR | Status |
139
140
| ---: | --- | --- | --- |
140
141
| 28 |*(reserved — vacated)*| — | Vacated by #4185/#4256 on 2026-08-02; RESERVED, not reissuable — the next-free frontier is the only allocation source |
141
-
| 29 |*(reserved — lapsed)*|— | Owner #4316 (successor of fork-era #4184) closed 2026-08-11 without merging; RESERVED, not reissuable|
142
+
| 29 |`ErrorAssetLockInsufficientFunds`|#4361|In review — **keeps 29**. Lineage: fork-era #4184 → #4316 (closed unmerged) → carried live by #4361's typed asset-lock shortfall (`ErrorAssetLockInsufficientFunds = 29` at its head)|
142
143
| 30 |*(reserved — vacated)*| — | Vacated by #4185/#4256 on 2026-08-02; RESERVED, not reissuable — the next-free frontier is the only allocation source |
143
144
| 32 |*(reserved — lapsed)*| — | Owner #4310 (successor of fork-era #4247) closed without merging; RESERVED, not reissuable |
144
145
| 33 |*(reserved — lapsed)*| — | Owner #4311 (successor of fork-era #4256) closed without merging; RESERVED, not reissuable |
145
146
| 37→(frontier) |`ErrorShieldedInviteAlreadyClaimed`|#4313| On hold — its claim of 37 (a 32 → 37 move; successor of fork-era #4204) was **taken by merged #4348** (`ErrorDocumentNotForSale = 37`, ABI since 2026-08-09). It holds **no number** while on hold: on revival it renumbers its Rust discriminant and Swift/Kotlin mappings to whatever this file's frontier is at that moment, recording the claim here first. 42 stays the public frontier until then |
146
147
147
148
**Code 31 left this table on 2026-08-04.**`ErrorSigningKeyUnavailable` sat here
148
149
as #4183's proposal until #4183 merged (`189a3abb1c`); it is now in the merged
149
-
table above and rule 3 applies to it in full. Nothing else in this table has
150
-
merged, and the frontier is unchanged at 38.
150
+
table above and rule 3 applies to it in full. It has since had company: the
151
+
reservation trio (34–36, #4308) and the 37–41 block (#4348, #4360) also
152
+
merged out of proposal, and the frontier now sits at 42 — see the merged
153
+
table and the frontier note above.
151
154
152
155
PRs that touch `rs-platform-wallet-ffi` but claim **no** new code, verified
153
156
2026-08-04 against each PR's file list and the `error.rs` at its head (a
@@ -230,8 +233,9 @@ which merged 27 into `v4.2-dev` on 2026-08-02. See the collision history below.
230
233
PR `#3968` is the serious one: rule 3 forbids renumbering a code that has
231
234
shipped, and `ErrorTransactionBroadcastRejected = 26` is merged ABI. Moving it
232
235
to 28 would silently reinterpret every 26 an already-compiled host returns.
233
-
PR #3968 must keep 26 where it is and take fresh integers **from the frontier
234
-
(38+)** for its two persister codes. Its 27 is now doubly wrong: 27 is merged
236
+
PR #3968 must keep 26 where it is and take fresh integers **from the
237
+
frontier (42+ as of 2026-08-11 — check the frontier note above)** for its two
238
+
persister codes. Its 27 is now doubly wrong: 27 is merged
235
239
ABI (`ErrorShutdownIncomplete`), so rule 3 protects it too. Note that 28 is
236
240
reserved, not free — it is not available to #3968 either.
237
241
@@ -388,7 +392,7 @@ The detail behind those rows:
388
392
simply the merged base's, and there is no second claim to reconcile.
389
393
390
394
PR `#3968` needs a rebase onto current `v4.2-dev`**and** fresh integers from
391
-
the frontier (**38+**). It must leave 26 alone; 27 is no longer available to it
395
+
the frontier (**42+**, per the frontier note above). It must leave 26 alone; 27 is no longer available to it
392
396
either (merged ABI now), and neither are the reserved 28 and 30.
393
397
394
398
### 26 — RESOLVED: #4196 restacked onto #4185 and is on 34 / 35 / 36
@@ -555,7 +559,9 @@ ABI. Each of those four SHAs is the **merge commit on `v4.2-dev`**, confirmed by
555
559
The 2026-08-04 pass re-read the discriminants directly, in-tree and at the
556
560
*current* head of every open PR that touches `error.rs`, `DashSdkError.kt` or
557
561
`PlatformWalletResult.swift`, and separately re-checked each PR's file list. It
558
-
confirmed:
562
+
confirmed — a **2026-08-04 verification snapshot, retained as record** (the
563
+
merged table and frontier note above are the current state; 34–41 have merged
564
+
since and the frontier is 42):
559
565
560
566
* in-tree at `97904ed2fc`, `error.rs` runs 0–27 contiguously and then **31**,
561
567
with 28, 29, 30 and everything from 32 up absent. So 31 is the only number
0 commit comments