Issue #3614464: A non-positive TTL silently means "never lapses" in the hold and lock APIs

One verb per operation, so a lifetime is always a lifetime.

  • extendHold($booking, $ttl) refuses a non-positive lifetime.
  • renewHold($booking) restarts the resource's own TTL (was a NULL argument).
  • suspendHold($booking) takes a hold off the clock (was a zero).
  • lockTransaction($order, $ttl) requires a positive checkout timeout.
  • lockTransactionIndefinitely($order) is what the "Lock order for checkout" action wants.
  • A resource holds indefinitely by leaving its hold TTL empty; getHoldTtl() returns NULL.

No path changes behavior. Docs, the French translation and tests are in the same commit; the full 107-class kernel suite is green, phpcs, phpstan and cspell clean.

Merge request reports

Loading
Loading