lib

Core libraries for Radroots
git clone https://radroots.dev/git/lib.git
Log | Files | Refs | README | LICENSE

commit 40acc9c4d65719b16a98c9eeb8ae896b30559db8
parent c3b2d8ec0f20c7acc12a6bfc3920aa16b80879fb
Author: triesap <tyson@radroots.org>
Date:   Tue, 23 Jun 2026 20:59:20 +0000

outbox: expose claimed attempt count

- include attempt_count on claimed outbox events
- return the incremented count from ready claim paths
- assert claim and reclaim attempt counts in store tests
- support attempt-scoped publish proxy idempotency keys

Diffstat:
Mcrates/outbox/src/model.rs | 1+
Mcrates/outbox/src/store.rs | 4++++
2 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/crates/outbox/src/model.rs b/crates/outbox/src/model.rs @@ -273,6 +273,7 @@ pub struct RadrootsOutboxClaimedEvent { pub outbox_event_id: i64, pub operation_id: i64, pub expected_event_id: String, + pub attempt_count: i64, pub state: RadrootsOutboxEventState, pub claim_token: String, pub draft: RadrootsFrozenEventDraft, diff --git a/crates/outbox/src/store.rs b/crates/outbox/src/store.rs @@ -398,6 +398,7 @@ impl RadrootsOutbox { outbox_event_id: record.outbox_event_id, operation_id: record.operation_id, expected_event_id: record.event_id, + attempt_count: record.attempt_count, state: claimed_state, claim_token: claim_token.as_ref().to_owned(), draft: record.draft, @@ -449,6 +450,7 @@ impl RadrootsOutbox { outbox_event_id: record.outbox_event_id, operation_id: record.operation_id, expected_event_id: record.event_id, + attempt_count: record.attempt_count, state: RadrootsOutboxEventState::Publishing, claim_token: claim_token.as_ref().to_owned(), draft: record.draft, @@ -2046,6 +2048,7 @@ mod tests { .expect("claim") .expect("claimed event"); assert_eq!(claimed.state, RadrootsOutboxEventState::Signing); + assert_eq!(claimed.attempt_count, 1); assert_eq!( claimed.target_relays, vec![RELAY_PRIMARY_WSS.to_owned(), RELAY_SECONDARY_WSS.to_owned()] @@ -2090,6 +2093,7 @@ mod tests { .expect("claim") .expect("reclaimed"); assert_eq!(reclaimed.state, RadrootsOutboxEventState::Signing); + assert_eq!(reclaimed.attempt_count, 2); } #[tokio::test]