Skip to content

v0.9.2 — Duplicate Reservation ID Fix

Choose a tag to compare

@lacrous lacrous released this 23 Aug 09:40
· 3 commits to main since this release

v0.9.2 — Reservation Identity & Accounting Integrity Patch

🐛 Bug Fixed

Duplicate reservation IDs could silently overwrite active reservations.

Previously:

reserve("r1", 0.50)  →  Map["r1"] = 0.50, _totalReserved += 0.50
reserve("r1", 0.25)  →  Map["r1"] = 0.25, _totalReserved += 0.25
// Result: Map has 0.25, but _totalReserved = 0.75
// The 0.50 reservation is orphaned — cannot be settled or released

Now: reserve() rejects duplicate IDs, preserving accounting integrity.

🛡️ Regression Tests

11 new tests covering:

  • Duplicate ID rejection (returns null)
  • No modification to existing reservation amount
  • No increase in totalReserved
  • Release/settle after rejected duplicate
  • Repeated duplicate attempts (100×)
  • Duplicate IDs under concurrency (1000 calls)
  • Random collision scenarios (1000 iterations, 4-ID pool)
  • Reserve after settle/release frees the ID
  • Client-generated IDs are verified unique

772 Tests Passing


Changelog: https://github.com/Hilbras/Hilbras-ai-sdk/blob/main/CHANGELOG.md